EntryScape logo EntryScape API API and SDK documentation

EntryScape API

AppToken

createAppToken

Create app token

Creates a new app token for metered public API access. This endpoint is unauthenticated — no session or credentials are required. The token is created in the `pending` state and a 6-digit verification code is emailed to the supplied address. The token value is **not** issued yet — confirm the code with `POST /app-token/verify` to activate the token and receive its value (shown only once). The server assigns a default read quota. The token grants access to public data only, metered by the read quota. Once active, pass the token via the `X-App-Token` header on subsequent requests.


/app-token

Usage and SDK Samples

curl -X POST \
 -H "Accept: application/json" \
 -H "Content-Type: application/json" \
 "https://api.entryscape.com/app-token" \
 -d '{
  "name" : "my-data-app",
  "email" : "owner@example.com"
}'
var api = new Entryscape.AppTokenApi();
api.createAppToken({name: 'my-data-app', email: 'owner@example.com'}, function(error, data) {
  if (!error) {
    console.log('Token ID:', data.id);
    console.log('Status:', data.status);
    // data.token is null until verified via POST /app-token/verify
    console.log('Check', data.email, 'for the 6-digit verification code');
  }
});

const api = new AppTokenApi(config);
const response = await api.createAppToken({
  appTokenCreateRequest: { name: 'my-data-app', email: 'owner@example.com' },
});
console.log('Token ID:', response.id);
console.log('Status:', response.status);
// response.token is null until verified via POST /app-token/verify
console.log('Check', response.email, 'for the 6-digit verification code');

api_instance = entryscape_client.AppTokenApi()
response = api_instance.create_app_token(
    app_token_create_request={'name': 'my-data-app', 'email': 'owner@example.com'}
)
print(f'Token ID: {response.id}')
print(f'Status: {response.status}')
# response.token is None until verified via POST /app-token/verify
print(f'Check {response.email} for the 6-digit verification code')

var apiInstance = new AppTokenApi();
var response = apiInstance.CreateAppToken(
    appTokenCreateRequest: new AppTokenCreateRequest(name: "my-data-app", email: "owner@example.com")
);
Debug.WriteLine("Token ID: " + response.Id);
Debug.WriteLine("Status: " + response.Status);
// response.Token is null until verified via POST /app-token/verify
Debug.WriteLine("Check " + response.Email + " for the 6-digit verification code");

Scopes

Parameters

Body parameters
Name Description
appTokenCreateRequest *

Responses


getAppToken

Get app token details

Returns details and quota usage for a specific app token. Requires authentication via the `X-App-Token` header. The token in the header must match the token associated with the requested app token ID.


/app-token/{app_token_id}

Usage and SDK Samples

curl -X GET \
-H "X-App-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/app-token/{app_token_id}"
var client = Entryscape.ApiClient.instance;
client.authentications['app_token_header'].apiKey = 'YOUR_APP_TOKEN';
var api = new Entryscape.AppTokenApi();
api.getAppToken('550e8400-e29b-41d4-a716-446655440000', function(error, data) {
  if (!error) {
    console.log('Token ID:', data.id);
    console.log('Name:', data.name);
    console.log('Quota:', data.read_quota);
    console.log('Used:', data.reads_used);
  }
});

const config = new Configuration({
  apiKey: { 'X-App-Token': 'YOUR_APP_TOKEN' },
});
const api = new AppTokenApi(config);
const response = await api.getAppToken({
  appTokenId: '550e8400-e29b-41d4-a716-446655440000',
});
console.log('Token ID:', response.id);
console.log('Name:', response.name);
console.log('Quota:', response.readQuota);
console.log('Used:', response.readsUsed);

configuration = entryscape_client.Configuration()
configuration.api_key['X-App-Token'] = 'YOUR_APP_TOKEN'
api_instance = entryscape_client.AppTokenApi(
    entryscape_client.ApiClient(configuration)
)
response = api_instance.get_app_token(
    app_token_id='550e8400-e29b-41d4-a716-446655440000'
)
print(f'Token ID: {response.id}')
print(f'Name: {response.name}')
print(f'Quota: {response.read_quota}')
print(f'Used: {response.reads_used}')

var config = new Configuration();
config.ApiKey.Add("X-App-Token", "YOUR_APP_TOKEN");
var apiInstance = new AppTokenApi(config);
var response = apiInstance.GetAppToken(
    appTokenId: "550e8400-e29b-41d4-a716-446655440000"
);
Debug.WriteLine("Token ID: " + response.Id);
Debug.WriteLine("Name: " + response.Name);
Debug.WriteLine("Quota: " + response.ReadQuota);
Debug.WriteLine("Used: " + response.ReadsUsed);

Scopes

Parameters

Path parameters
Name Description
app_token_id*
UUID (uuid)
Unique identifier for the app token
Required

Responses


verifyAppToken

Verify app token

Verifies a pending app token by confirming the 6-digit code that was emailed to the owner at creation time. This endpoint is unauthenticated — no session or credentials are required. On success the token transitions from `pending` to `active` and the response includes the token value, which is only shown once. Store it securely; it cannot be retrieved again. Pass the token via the `X-App-Token` header on subsequent requests.


/app-token/verify

Usage and SDK Samples

curl -X POST \
 -H "Accept: application/json" \
 -H "Content-Type: application/json" \
 "https://api.entryscape.com/app-token/verify" \
 -d '{
  "id" : "550e8400-e29b-41d4-a716-446655440000",
  "code" : "123456"
}'
var api = new Entryscape.AppTokenApi();
api.verifyAppToken({
  id: '550e8400-e29b-41d4-a716-446655440000',
  code: '123456',
}, function(error, data) {
  if (!error) {
    console.log('Status:', data.status);
    console.log('Token:', data.token);
  }
});

const api = new AppTokenApi(config);
const response = await api.verifyAppToken({
  appTokenVerifyRequest: {
    id: '550e8400-e29b-41d4-a716-446655440000',
    code: '123456',
  },
});
console.log('Status:', response.status);
console.log('Token:', response.token);

api_instance = entryscape_client.AppTokenApi()
response = api_instance.verify_app_token(
    app_token_verify_request={
        'id': '550e8400-e29b-41d4-a716-446655440000',
        'code': '123456',
    }
)
print(f'Status: {response.status}')
print(f'Token: {response.token}')

var apiInstance = new AppTokenApi();
var response = apiInstance.VerifyAppToken(
    appTokenVerifyRequest: new AppTokenVerifyRequest(
        id: "550e8400-e29b-41d4-a716-446655440000",
        code: "123456"
    )
);
Debug.WriteLine("Status: " + response.Status);
Debug.WriteLine("Token: " + response.Token);

Scopes

Parameters

Body parameters
Name Description
appTokenVerifyRequest *

Responses

Name Type Format Description
Retry-After Integer Seconds to wait before retrying.


Auth

login

Log in (start a user session)

Authenticates an EntryStore user and starts a session. The API server forwards the credentials to EntryStore's `auth/cookie` endpoint and never logs or stores them. On success the response body contains the `auth_token` — send it on subsequent requests via the `X-Auth-Token` header. The same token is also set as the `auth_token` cookie (`SameSite=Lax; Secure`) for browser clients. This endpoint is unauthenticated and CSRF-exempt, and is rate-limited per client to deter credential stuffing.


/auth/login

Usage and SDK Samples

curl -X POST \
 -H "Accept: application/json" \
 -H "Content-Type: application/json" \
 "https://api.entryscape.com/auth/login?entrystore_host=dev.entryscape.com/store/" \
 -d '{
  "password" : "password",
  "max_age_seconds" : 604800,
  "username" : "example@metasolutions.se"
}'
var api = new Entryscape.AuthApi();
api.login({username: 'example@metasolutions.se', password: 'your-password'}, function(error, data) {
  if (!error) {
    console.log('Token:', data.auth_token);
    console.log('User:', data.user);
  }
});

const api = new AuthApi(config);
const response = await api.login({
  loginRequest: { username: 'example@metasolutions.se', password: 'your-password' },
});
console.log('Token:', response.authToken);
console.log('User:', response.user);

api_instance = entryscape_client.AuthApi()
response = api_instance.login(
    login_request={'username': 'example@metasolutions.se', 'password': 'your-password'}
)
print(f'Token: {response.auth_token}')
print(f'User: {response.user}')

var apiInstance = new AuthApi();
var response = apiInstance.Login(
    loginRequest: new LoginRequest(username: "example@metasolutions.se", password: "your-password")
);
Debug.WriteLine("Token: " + response.AuthToken);
Debug.WriteLine("User: " + response.User);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
loginRequest *

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Set-Cookie String Clears the `auth_token` cookie (expired).

Name Type Format Description
Retry-After Integer Seconds to wait before retrying.


logout

Log out (end the user session)

Ends the session by invalidating the token via EntryStore's `auth/logout` endpoint, and clears the `auth_token` cookie. Send the token in the `X-Auth-Token` header (or the `auth_token` cookie in browsers).


/auth/logout

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/auth/logout?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.AuthApi();
api.logout(function(error) {
  if (!error) {
    console.log('Logged out');
  }
});

const api = new AuthApi(config);
await api.logout();

api_instance = entryscape_client.AuthApi()
api_instance.logout()

var apiInstance = new AuthApi();
apiInstance.Logout();

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Set-Cookie String Clears the `auth_token` cookie (expired).


whoami

Current user for the session

Returns the EntryStore user associated with the supplied session token, resolved via EntryStore's `auth/user` endpoint. Send the token in the `X-Auth-Token` header (or the `auth_token` cookie in browsers). A request with no or an invalid token returns `authenticated: false` with a guest/anonymous user rather than an error.


/auth/whoami

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/auth/whoami?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.AuthApi();
api.whoami(function(error, data) {
  if (!error) {
    console.log('User:', data.user, 'Authenticated:', data.authenticated);
  }
});

const api = new AuthApi(config);
const response = await api.whoami();
console.log('User:', response.user, 'Authenticated:', response.authenticated);

api_instance = entryscape_client.AuthApi()
response = api_instance.whoami()
print(f'User: {response.user}, Authenticated: {response.authenticated}')

var apiInstance = new AuthApi();
var response = apiInstance.Whoami();
Debug.WriteLine("User: " + response.User + ", Authenticated: " + response.Authenticated);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


Catalog

createCatalog

Create catalog

Creates a new catalog in the specified context. The request body must contain valid DCAT-AP metadata in JSON-LD format. Requires authentication with write access to the target context.


/catalog

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/catalog?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.CatalogApi();
var metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Catalog',
  'dct:title': [{ '@value': 'My Catalog', '@language': 'en' }],
  'dct:description': [{ '@value': 'A new catalog', '@language': 'en' }]
};
api.createCatalog('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new CatalogApi(config);
const metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Catalog',
  'dct:title': [{ '@value': 'My Catalog', '@language': 'en' }],
  'dct:description': [{ '@value': 'A new catalog', '@language': 'en' }],
};
const response = await api.createCatalog({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.CatalogApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcat': 'http://www.w3.org/ns/dcat#', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'dcat:Catalog',
    'dct:title': [{'@value': 'My Catalog', '@language': 'en'}],
    'dct:description': [{'@value': 'A new catalog', '@language': 'en'}],
}
response = api_instance.create_catalog(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new CatalogApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcat", "http://www.w3.org/ns/dcat#"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "dcat:Catalog"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "My Catalog"}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateCatalog(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteCatalog

Delete catalog

Deletes a specific catalog and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/catalog/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/catalog/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.CatalogApi();
api.deleteCatalog('1', '100', function(error) {
  if (!error) {
    console.log('Catalog deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new CatalogApi(config);
await api.deleteCatalog({
  contextId: '1',
  entryId: '100',
});
console.log('Catalog deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.CatalogApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_catalog(context_id='1', entry_id='100')
print('Catalog deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new CatalogApi(config);
apiInstance.DeleteCatalog(contextId: "1", entryId: "100");
Debug.WriteLine("Catalog deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getCatalog

Get catalog

Returns basic reference information for a specific catalog. Use the /metadata sub-endpoint to retrieve the full DCAT-AP metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/catalog/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/catalog/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.CatalogApi();
api.getCatalog('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new CatalogApi(config);
const response = await api.getCatalog({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.CatalogApi()
response = api_instance.get_catalog(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new CatalogApi();
var response = apiInstance.GetCatalog(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getCatalogMetadata

Get catalog metadata

Returns the raw DCAT-AP metadata for a specific catalog. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/catalog/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/catalog/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.CatalogApi();
api.getCatalogMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new CatalogApi(config);
const response = await api.getCatalogMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.CatalogApi()
response = api_instance.get_catalog_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new CatalogApi();
var response = apiInstance.GetCatalogMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listCatalogDataservices

List data services in catalog

Returns a paginated list of the data services this catalog links with `dcat:service`. Membership is the link, not the context: a data service the catalog does not link is not listed here, and a catalog that links none answers with zero results. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/catalog/{context_id}/{entry_id}/dataservices

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/catalog/{context_id}/{entry_id}/dataservices?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.CatalogApi();
var opts = {
  'query': 'weather'
};
api.listCatalogDataservices('1', '100', opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new CatalogApi(config);
const response = await api.listCatalogDataservices({
  contextId: '1',
  entryId: '100',
  query: 'weather',
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.CatalogApi()
response = api_instance.list_catalog_dataservices(
    context_id='1', entry_id='100',
    query='weather'
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new CatalogApi();
var response = apiInstance.ListCatalogDataservices(
    contextId: "1", entryId: "100",
    query: "weather"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


listCatalogDatasets

List datasets in catalog

Returns a paginated list of the datasets this catalog links with `dcat:dataset`. Membership is the link, not the context: a dataset the catalog does not link is not listed here, and a catalog that links none answers with zero results. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/catalog/{context_id}/{entry_id}/datasets

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/catalog/{context_id}/{entry_id}/datasets?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.CatalogApi();
var opts = {
  'query': 'transport'
};
api.listCatalogDatasets('1', '100', opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new CatalogApi(config);
const response = await api.listCatalogDatasets({
  contextId: '1',
  entryId: '100',
  query: 'transport',
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.CatalogApi()
response = api_instance.list_catalog_datasets(
    context_id='1', entry_id='100',
    query='transport'
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new CatalogApi();
var response = apiInstance.ListCatalogDatasets(
    contextId: "1", entryId: "100",
    query: "transport"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


listCatalogs

List catalogs

Returns a paginated list of all catalogs. Catalogs are curated collections of metadata about datasets and data services. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/catalog

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/catalog?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.CatalogApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listCatalogs(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new CatalogApi(config);
const response = await api.listCatalogs({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.CatalogApi()
response = api_instance.list_catalogs(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new CatalogApi();
var response = apiInstance.ListCatalogs(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateCatalogMetadata

Update catalog metadata

Replaces the DCAT-AP metadata for a specific catalog. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/catalog/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/catalog/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.CatalogApi();
var metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Catalog',
  'dct:title': [{ '@value': 'Updated Catalog Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated description', '@language': 'en' }]
};
api.updateCatalogMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new CatalogApi(config);
const metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Catalog',
  'dct:title': [{ '@value': 'Updated Catalog Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated description', '@language': 'en' }],
};
const response = await api.updateCatalogMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.CatalogApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcat': 'http://www.w3.org/ns/dcat#', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'dcat:Catalog',
    'dct:title': [{'@value': 'Updated Catalog Title', '@language': 'en'}],
    'dct:description': [{'@value': 'Updated description', '@language': 'en'}],
}
response = api_instance.update_catalog_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new CatalogApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcat", "http://www.w3.org/ns/dcat#"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "dcat:Catalog"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Catalog Title"}, {"@language", "en"}}
    }}
};
var response = apiInstance.UpdateCatalogMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


validateCatalog

Validate catalog metadata

Retrieves the stored metadata for this catalog entry from EntryStore and validates it against the SHACL shapes for the requested profile (a DCAT-AP profile, or the domain's custom shapes with profile=custom). No request body is needed — the endpoint operates on the entry's existing metadata, similar to how the `/metadata` endpoint returns it. Returns a detailed report with any violations, warnings, or informational findings. A 200 response with `conforms: false` is expected when the metadata has issues — it means validation completed successfully. `conforms: true` alone does not mean the metadata was checked. If no shape in the profile targets the entry — usually because its `rdf:type` is missing or wrong — the report conforms with nothing in it. `summary.targetedShapes` counts the shapes that had something to check; `0` means nothing was. Read `outcome` first: `validated` or `invalid` means the metadata was checked, anything else that nothing was. With `profile=custom` shapes follow the entry's configured type (`configuredType`). Authentication is optional. Public entries can be validated without authentication. Authenticated requests may validate additional non-public entries.


/catalog/{context_id}/{entry_id}/validate

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/catalog/{context_id}/{entry_id}/validate?entrystore_host=dev.entryscape.com/store/&profile=dcat-ap-3.0"
var api = new Entryscape.CatalogApi();
api.validateCatalog('1', '100', Entryscape.ValidationProfile['dcat-ap-3.0'], function(error, data) {
  if (!error) {
    console.log('Conforms:', data.conforms);
    console.log('Profile:', data.profile);
    console.log('Violations:', data.summary.violations);
    console.log('Warnings:', data.summary.warnings);
    data.results.forEach(function(r) {
      console.log(r.severity + ': ' + r.message);
    });
  }
});

const api = new CatalogApi(config);
const response = await api.validateCatalog({
  contextId: '1',
  entryId: '100',
  profile: ValidationProfile.DcatAp30,
});
console.log('Conforms:', response.conforms);
console.log('Profile:', response.profile);
console.log('Violations:', response.summary.violations);
console.log('Warnings:', response.summary.warnings);
response.results.forEach((r) => {
  console.log(`${r.severity}: ${r.message}`);
});

api_instance = entryscape_client.CatalogApi()
response = api_instance.validate_catalog(
    context_id='1', entry_id='100',
    profile=ValidationProfile.DCAT_MINUS_AP_MINUS_3_DOT_0
)
print(f'Conforms: {response.conforms}')
print(f'Profile: {response.profile}')
print(f'Violations: {response.summary.violations}')
print(f'Warnings: {response.summary.warnings}')
for r in response.results:
    print(f'{r.severity}: {r.message}')

var apiInstance = new CatalogApi();
var response = apiInstance.ValidateCatalog(
    contextId: "1", entryId: "100",
    profile: ValidationProfile.DcatAp30
);
Debug.WriteLine("Conforms: " + response.Conforms);
Debug.WriteLine("Profile: " + response.Profile);
Debug.WriteLine("Violations: " + response.Summary.Violations);
Debug.WriteLine("Warnings: " + response.Summary.Warnings);
foreach (var r in response.Results)
{
    Debug.WriteLine(r.Severity + ": " + r.Message);
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
profile*
ValidationProfile
DCAT-AP profile to validate against. Determines which SHACL shapes are used. Supported profiles: - `dcat-ap-2.1.1` - EU DCAT-AP 2.1.1 (stable, widely adopted) - `dcat-ap-3.0` - EU DCAT-AP 3.0 (current version)
Required

Responses


Contact

createContact

Create contact

Creates a new contact in the specified context. The request body must contain valid vCard metadata in JSON-LD format. The `@type` must be `vcard:Kind` — that is the only type this endpoint accepts, and anything else is rejected with `400`. A contact already in the store may carry `vcard:Organization` or `vcard:Individual` instead, and both are read back and matched by a type-filtered search; they just cannot be created here. Requires authentication with write access to the target context.


/contact

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/contact?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ContactApi();
var metadata = {
  '@context': { vcard: 'http://www.w3.org/2006/vcard/ns#', foaf: 'http://xmlns.com/foaf/0.1/' },
  '@type': 'vcard:Kind',
  'foaf:name': [{ '@value': 'John Doe', '@language': 'en' }],
  'vcard:hasEmail': { '@id': 'mailto:john.doe@example.com' },
  'vcard:hasTelephone': { '@id': 'tel:+123456789' }
};
api.createContact('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ContactApi(config);
const metadata = {
  '@context': { vcard: 'http://www.w3.org/2006/vcard/ns#', foaf: 'http://xmlns.com/foaf/0.1/' },
  '@type': 'vcard:Kind',
  'foaf:name': [{ '@value': 'John Doe', '@language': 'en' }],
  'vcard:hasEmail': { '@id': 'mailto:john.doe@example.com' },
  'vcard:hasTelephone': { '@id': 'tel:+123456789' },
};
const response = await api.createContact({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ContactApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'vcard': 'http://www.w3.org/2006/vcard/ns#', 'foaf': 'http://xmlns.com/foaf/0.1/'},
    '@type': 'vcard:Kind',
    'foaf:name': [{'@value': 'John Doe', '@language': 'en'}],
    'vcard:hasEmail': {'@id': 'mailto:john.doe@example.com'},
    'vcard:hasTelephone': {'@id': 'tel:+123456789'},
}
response = api_instance.create_contact(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ContactApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"vcard", "http://www.w3.org/2006/vcard/ns#"}, {"foaf", "http://xmlns.com/foaf/0.1/"}}},
    {"@type", "vcard:Kind"},
    {"foaf:name", new List<object> {
        new Dictionary<string, string> {{"@value", "John Doe"}, {"@language", "en"}}
    }},
    {"vcard:hasEmail", new Dictionary<string, string> {{"@id", "mailto:john.doe@example.com"}}}
};
var response = apiInstance.CreateContact(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteContact

Delete contact

Deletes a specific contact and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/contact/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/contact/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ContactApi();
api.deleteContact('1', '100', function(error) {
  if (!error) {
    console.log('Contact deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ContactApi(config);
await api.deleteContact({
  contextId: '1',
  entryId: '100',
});
console.log('Contact deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ContactApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_contact(context_id='1', entry_id='100')
print('Contact deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ContactApi(config);
apiInstance.DeleteContact(contextId: "1", entryId: "100");
Debug.WriteLine("Contact deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getContact

Get contact

Returns basic reference information for a specific contact. Use the /metadata sub-endpoint to retrieve the full vCard metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/contact/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/contact/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ContactApi();
api.getContact('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new ContactApi(config);
const response = await api.getContact({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.ContactApi()
response = api_instance.get_contact(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new ContactApi();
var response = apiInstance.GetContact(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getContactMetadata

Get contact metadata

Returns raw DCAT-AP metadata for a specific contact. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/contact/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/contact/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ContactApi();
api.getContactMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new ContactApi(config);
const response = await api.getContactMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.ContactApi()
response = api_instance.get_contact_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new ContactApi();
var response = apiInstance.GetContactMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listContacts

List contacts

Returns a paginated list of all contacts. Contacts provide contact information for resources (vCard). Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/contact

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/contact?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.ContactApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listContacts(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new ContactApi(config);
const response = await api.listContacts({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.ContactApi()
response = api_instance.list_contacts(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new ContactApi();
var response = apiInstance.ListContacts(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateContactMetadata

Update contact metadata

Replaces the vCard metadata for a specific contact. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/contact/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/contact/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ContactApi();
var metadata = {
  '@context': { vcard: 'http://www.w3.org/2006/vcard/ns#', foaf: 'http://xmlns.com/foaf/0.1/' },
  '@type': 'vcard:Individual',
  'foaf:name': [{ '@value': 'Updated Contact Name', '@language': 'en' }],
  'vcard:hasEmail': { '@id': 'mailto:updated@example.com' },
  'vcard:hasTelephone': { '@id': 'tel:+123456789' }
};
api.updateContactMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ContactApi(config);
const metadata = {
  '@context': { vcard: 'http://www.w3.org/2006/vcard/ns#', foaf: 'http://xmlns.com/foaf/0.1/' },
  '@type': 'vcard:Individual',
  'foaf:name': [{ '@value': 'Updated Contact Name', '@language': 'en' }],
  'vcard:hasEmail': { '@id': 'mailto:updated@example.com' },
  'vcard:hasTelephone': { '@id': 'tel:+123456789' },
};
const response = await api.updateContactMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ContactApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'vcard': 'http://www.w3.org/2006/vcard/ns#', 'foaf': 'http://xmlns.com/foaf/0.1/'},
    '@type': 'vcard:Individual',
    'foaf:name': [{'@value': 'Updated Contact Name', '@language': 'en'}],
    'vcard:hasEmail': {'@id': 'mailto:updated@example.com'},
    'vcard:hasTelephone': {'@id': 'tel:+123456789'},
}
response = api_instance.update_contact_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ContactApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"vcard", "http://www.w3.org/2006/vcard/ns#"}, {"foaf", "http://xmlns.com/foaf/0.1/"}}},
    {"@type", "vcard:Individual"},
    {"foaf:name", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Contact Name"}, {"@language", "en"}}
    }},
    {"vcard:hasEmail", new Dictionary<string, string> {{"@id", "mailto:updated@example.com"}}}
};
var response = apiInstance.UpdateContactMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


validateContact

Validate contact metadata

Retrieves the stored metadata for this contact point entry from EntryStore and validates it against the SHACL shapes for the requested profile (a DCAT-AP profile, or the domain's custom shapes with profile=custom). No request body is needed — the endpoint operates on the entry's existing metadata, similar to how the `/metadata` endpoint returns it. Returns a detailed report with any violations, warnings, or informational findings. A 200 response with `conforms: false` is expected when the metadata has issues — it means validation completed successfully. `conforms: true` alone does not mean the metadata was checked. If no shape in the profile targets the entry — usually because its `rdf:type` is missing or wrong — the report conforms with nothing in it. `summary.targetedShapes` counts the shapes that had something to check; `0` means nothing was. Read `outcome` first: `validated` or `invalid` means the metadata was checked, anything else that nothing was. With `profile=custom` shapes follow the entry's configured type (`configuredType`). Authentication is optional. Public entries can be validated without authentication. Authenticated requests may validate additional non-public entries.


/contact/{context_id}/{entry_id}/validate

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/contact/{context_id}/{entry_id}/validate?entrystore_host=dev.entryscape.com/store/&profile=dcat-ap-3.0"
var api = new Entryscape.ContactApi();
api.validateContact('1', '100', Entryscape.ValidationProfile['dcat-ap-3.0'], function(error, data) {
  if (!error) {
    console.log('Conforms:', data.conforms);
    console.log('Profile:', data.profile);
    console.log('Violations:', data.summary.violations);
    console.log('Warnings:', data.summary.warnings);
    data.results.forEach(function(r) {
      console.log(r.severity + ': ' + r.message);
    });
  }
});

const api = new ContactApi(config);
const response = await api.validateContact({
  contextId: '1',
  entryId: '100',
  profile: ValidationProfile.DcatAp30,
});
console.log('Conforms:', response.conforms);
console.log('Profile:', response.profile);
console.log('Violations:', response.summary.violations);
console.log('Warnings:', response.summary.warnings);
response.results.forEach((r) => {
  console.log(`${r.severity}: ${r.message}`);
});

api_instance = entryscape_client.ContactApi()
response = api_instance.validate_contact(
    context_id='1', entry_id='100',
    profile=ValidationProfile.DCAT_MINUS_AP_MINUS_3_DOT_0
)
print(f'Conforms: {response.conforms}')
print(f'Profile: {response.profile}')
print(f'Violations: {response.summary.violations}')
print(f'Warnings: {response.summary.warnings}')
for r in response.results:
    print(f'{r.severity}: {r.message}')

var apiInstance = new ContactApi();
var response = apiInstance.ValidateContact(
    contextId: "1", entryId: "100",
    profile: ValidationProfile.DcatAp30
);
Debug.WriteLine("Conforms: " + response.Conforms);
Debug.WriteLine("Profile: " + response.Profile);
Debug.WriteLine("Violations: " + response.Summary.Violations);
Debug.WriteLine("Warnings: " + response.Summary.Warnings);
foreach (var r in response.Results)
{
    Debug.WriteLine(r.Severity + ": " + r.Message);
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
profile*
ValidationProfile
DCAT-AP profile to validate against. Determines which SHACL shapes are used. Supported profiles: - `dcat-ap-2.1.1` - EU DCAT-AP 2.1.1 (stable, widely adopted) - `dcat-ap-3.0` - EU DCAT-AP 3.0 (current version)
Required

Responses


Dataservice

createDataService

Create data service

Creates a new data service in the specified context. The request body must contain valid DCAT-AP metadata in JSON-LD format. Requires authentication with write access to the target context.


/dataservice

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/dataservice?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DataserviceApi();
var metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:DataService',
  'dct:title': [{ '@value': 'My Data Service', '@language': 'en' }],
  'dcat:endpointURL': { '@id': 'http://example.org/api/v1' }
};
api.createDataService('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DataserviceApi(config);
const metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:DataService',
  'dct:title': [{ '@value': 'My Data Service', '@language': 'en' }],
  'dcat:endpointURL': { '@id': 'http://example.org/api/v1' },
};
const response = await api.createDataService({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DataserviceApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcat': 'http://www.w3.org/ns/dcat#', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'dcat:DataService',
    'dct:title': [{'@value': 'My Data Service', '@language': 'en'}],
    'dcat:endpointURL': {'@id': 'http://example.org/api/v1'},
}
response = api_instance.create_data_service(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DataserviceApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcat", "http://www.w3.org/ns/dcat#"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "dcat:DataService"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "My Data Service"}, {"@language", "en"}}
    }},
    {"dcat:endpointURL", new Dictionary<string, string> {{"@id", "http://example.org/api/v1"}}}
};
var response = apiInstance.CreateDataService(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteDataService

Delete data service

Deletes a specific data service and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/dataservice/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataservice/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DataserviceApi();
api.deleteDataService('1', '100', function(error) {
  if (!error) {
    console.log('Data service deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DataserviceApi(config);
await api.deleteDataService({
  contextId: '1',
  entryId: '100',
});
console.log('Data service deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DataserviceApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_data_service(context_id='1', entry_id='100')
print('Data service deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DataserviceApi(config);
apiInstance.DeleteDataService(contextId: "1", entryId: "100");
Debug.WriteLine("Data service deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getDataService

Get data service

Returns basic reference information for a specific data service. Use the /metadata sub-endpoint to retrieve the full DCAT-AP metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/dataservice/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataservice/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.DataserviceApi();
api.getDataService('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new DataserviceApi(config);
const response = await api.getDataService({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.DataserviceApi()
response = api_instance.get_data_service(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new DataserviceApi();
var response = apiInstance.GetDataService(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getDataServiceMetadata

Get data service metadata

Returns raw DCAT-AP metadata for a specific data service. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/dataservice/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/dataservice/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.DataserviceApi();
api.getDataServiceMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new DataserviceApi(config);
const response = await api.getDataServiceMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.DataserviceApi()
response = api_instance.get_data_service_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new DataserviceApi();
var response = apiInstance.GetDataServiceMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listDataServices

List data services

Returns a paginated list of all data services. Data services are APIs that provide access to one or more datasets. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/dataservice

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataservice?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.DataserviceApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listDataServices(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new DataserviceApi(config);
const response = await api.listDataServices({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.DataserviceApi()
response = api_instance.list_data_services(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new DataserviceApi();
var response = apiInstance.ListDataServices(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateDataServiceMetadata

Update data service metadata

Replaces the DCAT-AP metadata for a specific data service. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/dataservice/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/dataservice/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DataserviceApi();
var metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:DataService',
  'dct:title': [{ '@value': 'Updated Data Service Title', '@language': 'en' }],
  'dcat:endpointURL': { '@id': 'http://example.org/api/v2' }
};
api.updateDataServiceMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DataserviceApi(config);
const metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:DataService',
  'dct:title': [{ '@value': 'Updated Data Service Title', '@language': 'en' }],
  'dcat:endpointURL': { '@id': 'http://example.org/api/v2' },
};
const response = await api.updateDataServiceMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DataserviceApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcat': 'http://www.w3.org/ns/dcat#', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'dcat:DataService',
    'dct:title': [{'@value': 'Updated Data Service Title', '@language': 'en'}],
    'dcat:endpointURL': {'@id': 'http://example.org/api/v2'},
}
response = api_instance.update_data_service_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DataserviceApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcat", "http://www.w3.org/ns/dcat#"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "dcat:DataService"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Data Service Title"}, {"@language", "en"}}
    }},
    {"dcat:endpointURL", new Dictionary<string, string> {{"@id", "http://example.org/api/v2"}}}
};
var response = apiInstance.UpdateDataServiceMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


validateDataService

Validate data service metadata

Retrieves the stored metadata for this data service entry from EntryStore and validates it against the SHACL shapes for the requested profile (a DCAT-AP profile, or the domain's custom shapes with profile=custom). No request body is needed — the endpoint operates on the entry's existing metadata, similar to how the `/metadata` endpoint returns it. Returns a detailed report with any violations, warnings, or informational findings. A 200 response with `conforms: false` is expected when the metadata has issues — it means validation completed successfully. `conforms: true` alone does not mean the metadata was checked. If no shape in the profile targets the entry — usually because its `rdf:type` is missing or wrong — the report conforms with nothing in it. `summary.targetedShapes` counts the shapes that had something to check; `0` means nothing was. Read `outcome` first: `validated` or `invalid` means the metadata was checked, anything else that nothing was. With `profile=custom` shapes follow the entry's configured type (`configuredType`). Authentication is optional. Public entries can be validated without authentication. Authenticated requests may validate additional non-public entries.


/dataservice/{context_id}/{entry_id}/validate

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataservice/{context_id}/{entry_id}/validate?entrystore_host=dev.entryscape.com/store/&profile=dcat-ap-3.0"
var api = new Entryscape.DataserviceApi();
api.validateDataService('1', '100', Entryscape.ValidationProfile['dcat-ap-3.0'], function(error, data) {
  if (!error) {
    console.log('Conforms:', data.conforms);
    console.log('Profile:', data.profile);
    console.log('Violations:', data.summary.violations);
    console.log('Warnings:', data.summary.warnings);
    data.results.forEach(function(r) {
      console.log(r.severity + ': ' + r.message);
    });
  }
});

const api = new DataserviceApi(config);
const response = await api.validateDataService({
  contextId: '1',
  entryId: '100',
  profile: ValidationProfile.DcatAp30,
});
console.log('Conforms:', response.conforms);
console.log('Profile:', response.profile);
console.log('Violations:', response.summary.violations);
console.log('Warnings:', response.summary.warnings);
response.results.forEach((r) => {
  console.log(`${r.severity}: ${r.message}`);
});

api_instance = entryscape_client.DataserviceApi()
response = api_instance.validate_data_service(
    context_id='1', entry_id='100',
    profile=ValidationProfile.DCAT_MINUS_AP_MINUS_3_DOT_0
)
print(f'Conforms: {response.conforms}')
print(f'Profile: {response.profile}')
print(f'Violations: {response.summary.violations}')
print(f'Warnings: {response.summary.warnings}')
for r in response.results:
    print(f'{r.severity}: {r.message}')

var apiInstance = new DataserviceApi();
var response = apiInstance.ValidateDataService(
    contextId: "1", entryId: "100",
    profile: ValidationProfile.DcatAp30
);
Debug.WriteLine("Conforms: " + response.Conforms);
Debug.WriteLine("Profile: " + response.Profile);
Debug.WriteLine("Violations: " + response.Summary.Violations);
Debug.WriteLine("Warnings: " + response.Summary.Warnings);
foreach (var r in response.Results)
{
    Debug.WriteLine(r.Severity + ": " + r.Message);
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
profile*
ValidationProfile
DCAT-AP profile to validate against. Determines which SHACL shapes are used. Supported profiles: - `dcat-ap-2.1.1` - EU DCAT-AP 2.1.1 (stable, widely adopted) - `dcat-ap-3.0` - EU DCAT-AP 3.0 (current version)
Required

Responses


Dataset

createDataset

Create dataset

Creates a new dataset in the specified context. The request body must contain valid DCAT-AP metadata in JSON-LD format. Requires authentication with write access to the target context.


/dataset

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/dataset?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DatasetApi();
var metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Dataset',
  'dct:title': [{ '@value': 'My Dataset', '@language': 'en' }],
  'dct:description': [{ '@value': 'A new dataset', '@language': 'en' }]
};
api.createDataset('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DatasetApi(config);
const metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Dataset',
  'dct:title': [{ '@value': 'My Dataset', '@language': 'en' }],
  'dct:description': [{ '@value': 'A new dataset', '@language': 'en' }],
};
const response = await api.createDataset({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DatasetApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcat': 'http://www.w3.org/ns/dcat#', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'dcat:Dataset',
    'dct:title': [{'@value': 'My Dataset', '@language': 'en'}],
    'dct:description': [{'@value': 'A new dataset', '@language': 'en'}],
}
response = api_instance.create_dataset(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DatasetApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcat", "http://www.w3.org/ns/dcat#"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "dcat:Dataset"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "My Dataset"}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateDataset(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteDataset

Delete dataset

Deletes a specific dataset and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/dataset/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataset/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DatasetApi();
api.deleteDataset('1', '100', function(error) {
  if (!error) {
    console.log('Dataset deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DatasetApi(config);
await api.deleteDataset({
  contextId: '1',
  entryId: '100',
});
console.log('Dataset deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DatasetApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_dataset(context_id='1', entry_id='100')
print('Dataset deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DatasetApi(config);
apiInstance.DeleteDataset(contextId: "1", entryId: "100");
Debug.WriteLine("Dataset deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getDataset

Get dataset

Returns basic reference information for a specific dataset. Use the /metadata sub-endpoint to retrieve the full DCAT-AP metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/dataset/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataset/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.DatasetApi();
api.getDataset('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new DatasetApi(config);
const response = await api.getDataset({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.DatasetApi()
response = api_instance.get_dataset(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new DatasetApi();
var response = apiInstance.GetDataset(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getDatasetMetadata

Get dataset metadata

Returns the raw DCAT-AP metadata for a specific dataset. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/dataset/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/dataset/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.DatasetApi();
api.getDatasetMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new DatasetApi(config);
const response = await api.getDatasetMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.DatasetApi()
response = api_instance.get_dataset_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new DatasetApi();
var response = apiInstance.GetDatasetMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listDatasetDistributions

List distributions for dataset

Returns a paginated list of the distributions this dataset links with `dcat:distribution`. Membership is the link, not the context: a distribution the dataset does not link is not listed here, and a dataset that links none answers with zero results. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/dataset/{context_id}/{entry_id}/distributions

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataset/{context_id}/{entry_id}/distributions?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.DatasetApi();
var opts = {
  'query': 'csv'
};
api.listDatasetDistributions('1', '100', opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new DatasetApi(config);
const response = await api.listDatasetDistributions({
  contextId: '1',
  entryId: '100',
  query: 'csv',
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.DatasetApi()
response = api_instance.list_dataset_distributions(
    context_id='1', entry_id='100',
    query='csv'
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new DatasetApi();
var response = apiInstance.ListDatasetDistributions(
    contextId: "1", entryId: "100",
    query: "csv"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


listDatasets

List datasets

Returns a paginated list of all datasets. Datasets are collections of data published or curated by a single agent. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/dataset

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataset?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.DatasetApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listDatasets(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new DatasetApi(config);
const response = await api.listDatasets({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.DatasetApi()
response = api_instance.list_datasets(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new DatasetApi();
var response = apiInstance.ListDatasets(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateDatasetMetadata

Update dataset metadata

Replaces the DCAT-AP metadata for a specific dataset. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/dataset/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/dataset/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DatasetApi();
var metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Dataset',
  'dct:title': [{ '@value': 'Updated Dataset Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated description', '@language': 'en' }]
};
api.updateDatasetMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DatasetApi(config);
const metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Dataset',
  'dct:title': [{ '@value': 'Updated Dataset Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated description', '@language': 'en' }],
};
const response = await api.updateDatasetMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DatasetApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcat': 'http://www.w3.org/ns/dcat#', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'dcat:Dataset',
    'dct:title': [{'@value': 'Updated Dataset Title', '@language': 'en'}],
    'dct:description': [{'@value': 'Updated description', '@language': 'en'}],
}
response = api_instance.update_dataset_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DatasetApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcat", "http://www.w3.org/ns/dcat#"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "dcat:Dataset"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Dataset Title"}, {"@language", "en"}}
    }}
};
var response = apiInstance.UpdateDatasetMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


validateDataset

Validate dataset metadata

Retrieves the stored metadata for this dataset entry from EntryStore and validates it against the SHACL shapes for the requested profile (a DCAT-AP profile, or the domain's custom shapes with profile=custom). No request body is needed — the endpoint operates on the entry's existing metadata, similar to how the `/metadata` endpoint returns it. Returns a detailed report with any violations, warnings, or informational findings. A 200 response with `conforms: false` is expected when the metadata has issues — it means validation completed successfully. `conforms: true` alone does not mean the metadata was checked. If no shape in the profile targets the entry — usually because its `rdf:type` is missing or wrong — the report conforms with nothing in it. `summary.targetedShapes` counts the shapes that had something to check; `0` means nothing was. Read `outcome` first: `validated` or `invalid` means the metadata was checked, anything else that nothing was. With `profile=custom` shapes follow the entry's configured type (`configuredType`). Authentication is optional. Public entries can be validated without authentication. Authenticated requests may validate additional non-public entries.


/dataset/{context_id}/{entry_id}/validate

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/dataset/{context_id}/{entry_id}/validate?entrystore_host=dev.entryscape.com/store/&profile=dcat-ap-3.0"
var api = new Entryscape.DatasetApi();
api.validateDataset('1', '100', Entryscape.ValidationProfile['dcat-ap-3.0'], function(error, data) {
  if (!error) {
    console.log('Conforms:', data.conforms);
    console.log('Profile:', data.profile);
    console.log('Violations:', data.summary.violations);
    console.log('Warnings:', data.summary.warnings);
    data.results.forEach(function(r) {
      console.log(r.severity + ': ' + r.message);
    });
  }
});

const api = new DatasetApi(config);
const response = await api.validateDataset({
  contextId: '1',
  entryId: '100',
  profile: ValidationProfile.DcatAp30,
});
console.log('Conforms:', response.conforms);
console.log('Profile:', response.profile);
console.log('Violations:', response.summary.violations);
console.log('Warnings:', response.summary.warnings);
response.results.forEach((r) => {
  console.log(`${r.severity}: ${r.message}`);
});

api_instance = entryscape_client.DatasetApi()
response = api_instance.validate_dataset(
    context_id='1', entry_id='100',
    profile=ValidationProfile.DCAT_MINUS_AP_MINUS_3_DOT_0
)
print(f'Conforms: {response.conforms}')
print(f'Profile: {response.profile}')
print(f'Violations: {response.summary.violations}')
print(f'Warnings: {response.summary.warnings}')
for r in response.results:
    print(f'{r.severity}: {r.message}')

var apiInstance = new DatasetApi();
var response = apiInstance.ValidateDataset(
    contextId: "1", entryId: "100",
    profile: ValidationProfile.DcatAp30
);
Debug.WriteLine("Conforms: " + response.Conforms);
Debug.WriteLine("Profile: " + response.Profile);
Debug.WriteLine("Violations: " + response.Summary.Violations);
Debug.WriteLine("Warnings: " + response.Summary.Warnings);
foreach (var r in response.Results)
{
    Debug.WriteLine(r.Severity + ": " + r.Message);
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
profile*
ValidationProfile
DCAT-AP profile to validate against. Determines which SHACL shapes are used. Supported profiles: - `dcat-ap-2.1.1` - EU DCAT-AP 2.1.1 (stable, widely adopted) - `dcat-ap-3.0` - EU DCAT-AP 3.0 (current version)
Required

Responses


Distribution

createDistribution

Create distribution

Creates a new distribution in the specified context. The request body must contain valid DCAT-AP metadata in JSON-LD format. Requires authentication with write access to the target context.


/distribution

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/distribution?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DistributionApi();
var metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Distribution',
  'dct:title': [{ '@value': 'My Distribution', '@language': 'en' }],
  'dcat:accessURL': { '@id': 'http://example.org/data/sample.csv' }
};
api.createDistribution('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DistributionApi(config);
const metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Distribution',
  'dct:title': [{ '@value': 'My Distribution', '@language': 'en' }],
  'dcat:accessURL': { '@id': 'http://example.org/data/sample.csv' },
};
const response = await api.createDistribution({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DistributionApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcat': 'http://www.w3.org/ns/dcat#', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'dcat:Distribution',
    'dct:title': [{'@value': 'My Distribution', '@language': 'en'}],
    'dcat:accessURL': {'@id': 'http://example.org/data/sample.csv'},
}
response = api_instance.create_distribution(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DistributionApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcat", "http://www.w3.org/ns/dcat#"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "dcat:Distribution"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "My Distribution"}, {"@language", "en"}}
    }},
    {"dcat:accessURL", new Dictionary<string, string> {{"@id", "http://example.org/data/sample.csv"}}}
};
var response = apiInstance.CreateDistribution(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteDistribution

Delete distribution

Deletes a specific distribution and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/distribution/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/distribution/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DistributionApi();
api.deleteDistribution('1', '100', function(error) {
  if (!error) {
    console.log('Distribution deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DistributionApi(config);
await api.deleteDistribution({
  contextId: '1',
  entryId: '100',
});
console.log('Distribution deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DistributionApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_distribution(context_id='1', entry_id='100')
print('Distribution deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DistributionApi(config);
apiInstance.DeleteDistribution(contextId: "1", entryId: "100");
Debug.WriteLine("Distribution deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getDistribution

Get distribution

Returns basic reference information for a specific distribution. Use the /metadata sub-endpoint to retrieve the full DCAT-AP metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/distribution/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/distribution/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.DistributionApi();
api.getDistribution('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new DistributionApi(config);
const response = await api.getDistribution({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.DistributionApi()
response = api_instance.get_distribution(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new DistributionApi();
var response = apiInstance.GetDistribution(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getDistributionMetadata

Get distribution metadata

Returns the raw DCAT-AP metadata for a specific distribution. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/distribution/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/distribution/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.DistributionApi();
api.getDistributionMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    // Extract file download URL
    var downloadUrl = entity['dcat:downloadURL'] || entity['dcat:accessURL'];
    var fileUrl = downloadUrl && typeof downloadUrl === 'object' ? downloadUrl['@id'] : downloadUrl;
    console.log('Download URL:', fileUrl);
    console.log('Full response:', data);
  }
});

const api = new DistributionApi(config);
const response = await api.getDistributionMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
  // Extract file download URL
  const downloadUrl = entity['dcat:downloadURL'] || entity['dcat:accessURL'];
  const fileUrl = typeof downloadUrl === 'object' ? (downloadUrl as any)['@id'] : downloadUrl;
  console.log('Download URL:', fileUrl);
console.log('Full response:', response);

api_instance = entryscape_client.DistributionApi()
response = api_instance.get_distribution_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')
# Extract file download URL
download_url = entity.get('dcat:downloadURL') or entity.get('dcat:accessURL')
file_url = download_url.get('@id') if isinstance(download_url, dict) else download_url
print(f'Download URL: {file_url}')

var apiInstance = new DistributionApi();
var response = apiInstance.GetDistributionMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
    // Extract file download URL
    object downloadUrl;
    if (entity.TryGetValue("dcat:downloadURL", out downloadUrl) ||
        entity.TryGetValue("dcat:accessURL", out downloadUrl))
    {
        var urlDict = downloadUrl as Dictionary<string, object>;
        var fileUrl = urlDict != null ? urlDict["@id"] : downloadUrl;
        Debug.WriteLine("Download URL: " + fileUrl);
    }
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listDistributions

List distributions

Returns a paginated list of all distributions. Distributions are accessible forms of datasets such as downloadable files. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/distribution

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/distribution?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.DistributionApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listDistributions(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new DistributionApi(config);
const response = await api.listDistributions({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.DistributionApi()
response = api_instance.list_distributions(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new DistributionApi();
var response = apiInstance.ListDistributions(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateDistributionMetadata

Update distribution metadata

Replaces the DCAT-AP metadata for a specific distribution. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/distribution/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/distribution/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DistributionApi();
var metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Distribution',
  'dct:title': [{ '@value': 'Updated Distribution Title', '@language': 'en' }],
  'dcat:accessURL': { '@id': 'http://example.org/data/updated.csv' }
};
api.updateDistributionMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DistributionApi(config);
const metadata = {
  '@context': { dcat: 'http://www.w3.org/ns/dcat#', dct: 'http://purl.org/dc/terms/' },
  '@type': 'dcat:Distribution',
  'dct:title': [{ '@value': 'Updated Distribution Title', '@language': 'en' }],
  'dcat:accessURL': { '@id': 'http://example.org/data/updated.csv' },
};
const response = await api.updateDistributionMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DistributionApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcat': 'http://www.w3.org/ns/dcat#', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'dcat:Distribution',
    'dct:title': [{'@value': 'Updated Distribution Title', '@language': 'en'}],
    'dcat:accessURL': {'@id': 'http://example.org/data/updated.csv'},
}
response = api_instance.update_distribution_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DistributionApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcat", "http://www.w3.org/ns/dcat#"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "dcat:Distribution"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Distribution Title"}, {"@language", "en"}}
    }},
    {"dcat:accessURL", new Dictionary<string, string> {{"@id", "http://example.org/data/updated.csv"}}}
};
var response = apiInstance.UpdateDistributionMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


validateDistribution

Validate distribution metadata

Retrieves the stored metadata for this distribution entry from EntryStore and validates it against the SHACL shapes for the requested profile (a DCAT-AP profile, or the domain's custom shapes with profile=custom). No request body is needed — the endpoint operates on the entry's existing metadata, similar to how the `/metadata` endpoint returns it. Returns a detailed report with any violations, warnings, or informational findings. A 200 response with `conforms: false` is expected when the metadata has issues — it means validation completed successfully. `conforms: true` alone does not mean the metadata was checked. If no shape in the profile targets the entry — usually because its `rdf:type` is missing or wrong — the report conforms with nothing in it. `summary.targetedShapes` counts the shapes that had something to check; `0` means nothing was. Read `outcome` first: `validated` or `invalid` means the metadata was checked, anything else that nothing was. With `profile=custom` shapes follow the entry's configured type (`configuredType`). Authentication is optional. Public entries can be validated without authentication. Authenticated requests may validate additional non-public entries.


/distribution/{context_id}/{entry_id}/validate

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/distribution/{context_id}/{entry_id}/validate?entrystore_host=dev.entryscape.com/store/&profile=dcat-ap-3.0"
var api = new Entryscape.DistributionApi();
api.validateDistribution('1', '100', Entryscape.ValidationProfile['dcat-ap-3.0'], function(error, data) {
  if (!error) {
    console.log('Conforms:', data.conforms);
    console.log('Profile:', data.profile);
    console.log('Violations:', data.summary.violations);
    console.log('Warnings:', data.summary.warnings);
    data.results.forEach(function(r) {
      console.log(r.severity + ': ' + r.message);
    });
  }
});

const api = new DistributionApi(config);
const response = await api.validateDistribution({
  contextId: '1',
  entryId: '100',
  profile: ValidationProfile.DcatAp30,
});
console.log('Conforms:', response.conforms);
console.log('Profile:', response.profile);
console.log('Violations:', response.summary.violations);
console.log('Warnings:', response.summary.warnings);
response.results.forEach((r) => {
  console.log(`${r.severity}: ${r.message}`);
});

api_instance = entryscape_client.DistributionApi()
response = api_instance.validate_distribution(
    context_id='1', entry_id='100',
    profile=ValidationProfile.DCAT_MINUS_AP_MINUS_3_DOT_0
)
print(f'Conforms: {response.conforms}')
print(f'Profile: {response.profile}')
print(f'Violations: {response.summary.violations}')
print(f'Warnings: {response.summary.warnings}')
for r in response.results:
    print(f'{r.severity}: {r.message}')

var apiInstance = new DistributionApi();
var response = apiInstance.ValidateDistribution(
    contextId: "1", entryId: "100",
    profile: ValidationProfile.DcatAp30
);
Debug.WriteLine("Conforms: " + response.Conforms);
Debug.WriteLine("Profile: " + response.Profile);
Debug.WriteLine("Violations: " + response.Summary.Violations);
Debug.WriteLine("Warnings: " + response.Summary.Warnings);
foreach (var r in response.Results)
{
    Debug.WriteLine(r.Severity + ": " + r.Message);
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
profile*
ValidationProfile
DCAT-AP profile to validate against. Determines which SHACL shapes are used. Supported profiles: - `dcat-ap-2.1.1` - EU DCAT-AP 2.1.1 (stable, widely adopted) - `dcat-ap-3.0` - EU DCAT-AP 3.0 (current version)
Required

Responses


Document

createDocument

Create document

Creates a new document in the specified context. The request body must contain valid metadata in JSON-LD format. Requires authentication with write access to the target context.


/document

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/document?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DocumentApi();
var metadata = {
  '@context': { foaf: 'http://xmlns.com/foaf/0.1/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'foaf:Document',
  'dct:title': [{ '@value': 'API Documentation', '@language': 'en' }],
  'dct:description': [{ '@value': 'Technical documentation for the API.', '@language': 'en' }],
  'foaf:page': { '@id': 'https://example.com/docs' }
};
api.createDocument('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DocumentApi(config);
const metadata = {
  '@context': { foaf: 'http://xmlns.com/foaf/0.1/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'foaf:Document',
  'dct:title': [{ '@value': 'API Documentation', '@language': 'en' }],
  'dct:description': [{ '@value': 'Technical documentation for the API.', '@language': 'en' }],
  'foaf:page': { '@id': 'https://example.com/docs' },
};
const response = await api.createDocument({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DocumentApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'foaf': 'http://xmlns.com/foaf/0.1/', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'foaf:Document',
    'dct:title': [{'@value': 'API Documentation', '@language': 'en'}],
    'dct:description': [{'@value': 'Technical documentation for the API.', '@language': 'en'}],
    'foaf:page': {'@id': 'https://example.com/docs'},
}
response = api_instance.create_document(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DocumentApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"foaf", "http://xmlns.com/foaf/0.1/"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "foaf:Document"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "API Documentation"}, {"@language", "en"}}
    }},
    {"dct:description", new List<object> {
        new Dictionary<string, string> {{"@value", "Technical documentation for the API."}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateDocument(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteDocument

Delete document

Deletes a specific document and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/document/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/document/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DocumentApi();
api.deleteDocument('1', '100', function(error) {
  if (!error) {
    console.log('Document deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DocumentApi(config);
await api.deleteDocument({
  contextId: '1',
  entryId: '100',
});
console.log('Document deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DocumentApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_document(context_id='1', entry_id='100')
print('Document deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DocumentApi(config);
apiInstance.DeleteDocument(contextId: "1", entryId: "100");
Debug.WriteLine("Document deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getDocument

Get document

Returns basic reference information for a specific document. Use the /metadata sub-endpoint to retrieve the full metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/document/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/document/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.DocumentApi();
api.getDocument('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new DocumentApi(config);
const response = await api.getDocument({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.DocumentApi()
response = api_instance.get_document(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new DocumentApi();
var response = apiInstance.GetDocument(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getDocumentMetadata

Get document metadata

Returns raw DCAT-AP metadata for a specific document. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/document/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/document/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.DocumentApi();
api.getDocumentMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new DocumentApi(config);
const response = await api.getDocumentMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.DocumentApi()
response = api_instance.get_document_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new DocumentApi();
var response = apiInstance.GetDocumentMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listDocuments

List documents

Returns a paginated list of all documents. Documents include generic documents, standards, and license documents. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/document

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/document?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.DocumentApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listDocuments(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new DocumentApi(config);
const response = await api.listDocuments({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.DocumentApi()
response = api_instance.list_documents(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new DocumentApi();
var response = apiInstance.ListDocuments(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateDocumentMetadata

Update document metadata

Replaces the metadata for a specific document. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/document/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/document/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.DocumentApi();
var metadata = {
  '@context': { foaf: 'http://xmlns.com/foaf/0.1/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'foaf:Document',
  'dct:title': [{ '@value': 'Updated Document Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated document description.', '@language': 'en' }],
  'foaf:page': { '@id': 'https://example.com/updated-docs' }
};
api.updateDocumentMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new DocumentApi(config);
const metadata = {
  '@context': { foaf: 'http://xmlns.com/foaf/0.1/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'foaf:Document',
  'dct:title': [{ '@value': 'Updated Document Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated document description.', '@language': 'en' }],
  'foaf:page': { '@id': 'https://example.com/updated-docs' },
};
const response = await api.updateDocumentMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.DocumentApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'foaf': 'http://xmlns.com/foaf/0.1/', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'foaf:Document',
    'dct:title': [{'@value': 'Updated Document Title', '@language': 'en'}],
    'dct:description': [{'@value': 'Updated document description.', '@language': 'en'}],
    'foaf:page': {'@id': 'https://example.com/updated-docs'},
}
response = api_instance.update_document_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new DocumentApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"foaf", "http://xmlns.com/foaf/0.1/"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "foaf:Document"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Document Title"}, {"@language", "en"}}
    }},
    {"dct:description", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated document description."}, {"@language", "en"}}
    }}
};
var response = apiInstance.UpdateDocumentMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


EntityType

discoverEntityTypes

Discover applicable entity types for a context

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a projection of the effective configuration for the selected EntryStore host, context and caller. The module is derived from the context, never from a request input: a context whose entry information has rdf:type http://entryscape.com/terms/WorkbenchContext (an EntryScape Workbench project) is resolved in the workbench module, every other context in catalog. The response's module states which. Both the resolved host and context are mandatory in a successful response, including when the default host was used. Configured types exist in effective configuration; applicable types also pass the merged context selection and module/global/access filters. Permitted actions require separate authorization: discovery never grants write access. Primary and secondary types come from the merged context selection. A useWith type is offered only if its parent is applicable and its own restrictions pass. Excluded, non-global and invalid types are not selectable. A valid base or relation target may be absent from the result; do not reveal hidden type definitions to complete references. A primary type has neither refines nor useWith; a secondary type has refines but no useWith; a useWith type has a parent, with or without refines. These links do not imply inheritance. Map only the type's own raw rdfType values to rdfTypes. Preserve its own constraints object separately, including any rdf:type constraint; never infer rdfTypes from constraints or a base type. Preserve its own form template reference as an opaque string, not necessarily a URI. The response is not a raw configuration dump. Existing arbitrary RDF search and raw metadata endpoints remain available and are not reimplemented. Authentication is optional for public contexts. Invalid supplied credentials fail with 401; a known unreadable context yields 403, while missing or hidden contexts yield 404. Reauthorize the context and caller on every call. Return Cache-Control: private, no-store; never share a resolved result across callers. Configuration provenance freshness does not promise remote re-fetch on each call, and configurationVersion is not a permission token. Resolution is atomic: absent, unavailable or malformed configuration and unresolved selection must fail, never return a partial or built-in fallback success. A valid configuration with no applicable types may return empty arrays. Errors must not disclose raw URLs, private configuration bodies, exception text, ETags or credentials. The standard Error.code remains the HTTP status; Error.error carries the stable configuration category described below. **Catalog example:** request `GET /entity-types/42?entrystore_host=catalog.example.org/store/` with `Accept: application/json`, anonymously for a public context. The response example below is synthetic, not a real customer configuration.


/entity-types/{context_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/entity-types/{context_id}?entrystore_host=dev.entryscape.com/store/"




Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Cache-Control String Required on every successful response; no caller-shared caching.


Entry

createConfiguredEntry

Create an entry of a configured type

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Creates an entry using the application/json ConfiguredEntryWrite wrapper, never a typed DCAT model or raw RDF body. Requires authentication and write access to the target context; cookie-only authentication additionally requires X-XSRF-TOKEN. Selection is reauthorized for this host, context and caller. Validate the selected type's own matching, constraints, resource kind, URI generation rules and store-wide URI uniqueness before mutation. Reject unsupported rules with 422 or invalid configuration with 503 CONFIGURATION_INVALID. Do not silently fall back to a built-in type or inherit through refines. Custom shapes are those of the selected type (else its template's), not its RDF class: outcome invalid or unsupported_rule is 422 (report in validation), configuration_* 503 without one, retry later; otherwise the 201 body's validation states the outcome. Set http://entryscape.com/terms/entityType in entry information to the canonical selected type URI, not to its name or RDF class. This marker is not part of user metadata. Never rewrite another entry's marker. If resource_uri is supplied, the JSON-LD root @id must match it. Otherwise allocate the canonical resource URI and bind the document root to it; reject ambiguous multiple-root graphs with 422. External references are stored only, never fetched. Malformed JSON-LD or remote contexts return 400. A useWith type requires parent. Before creation validate the parent exists, is readable and writable, matches the expected configured parent type and is eligible for the association. Resolve useWithProperty for the selected child type, using its own value and supported refines fallback, not the parent type. Link parent resource via that predicate to child resource. Missing parent is 422; missing/hidden parent is 404, denied permission is 403 and a known type mismatch is 409. An unsupported association rule fails before writing, never as successful orphan creation. If association fails, compensate by removing the new child. No partial success is reported. If compensation also fails, return 503 and disclose residual identifiers only when authorized for this caller; reconciliation is required. Do not claim a cross-entry atomic transaction. Example request: POST /entries/42?configured_type=https%3A%2F%2Fexample.org%2Ftypes%2Friver-observations with Content-Type: application/json and the ConfiguredEntryWrite example body; the ConfiguredEntryReference example is a synthetic 201 response.


/entries/{context_id}

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/json" \
 "https://api.entryscape.com/entries/{context_id}?entrystore_host=dev.entryscape.com/store/&configured_type=https://example.org/types/river-observations" \
 -d '{
  "metadata" : {
    "@context" : {
      "dcat" : "http://www.w3.org/ns/dcat#",
      "dct" : "http://purl.org/dc/terms/"
    },
    "@type" : "dcat:Dataset",
    "dct:type" : {
      "@id" : "https://example.org/concepts/river"
    },
    "dct:title" : {
      "@value" : "River observations",
      "@language" : "en"
    }
  }
}'




Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
X-XSRF-TOKEN
String
Required for cookie-only authentication; matches the XSRF-TOKEN cookie.
Body parameters
Name Description
configuredEntryWrite *

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
configured_type*
String
Selects a configured type by its exact discovery id (canonical URI) or exact, case-sensitive name. An exact id match takes precedence over a name match. Resolve against the effective configuration for this host, context and caller on every request; discovery does not grant permission. Unknown or foreign ids/names return 400; ambiguous names return 409. A configured but inapplicable type returns 403, or 404 when hidden from the caller. This selector never forces a type onto an entry. The canonical type marker http://entryscape.com/terms/entityType belongs to entry information, not user metadata, and takes precedence over RDF matching. A known conflicting marker returns 409 on a single-entry operation. Unknown, foreign or multiple conflicting markers return 409 on single-entry operations and must not be reclassified through a shared RDF class. Without a marker, the entry's type is its one effective match, else the context's primary type among its matches (ConfiguredEntryReference's markerless resolution); no primary among several matches, or a type other than the selected one, returns 409. Lists exclude nonmatching entries. All entry operations use the normalized matching rules documented by ConfiguredEntryReference: own URI constraints/presence tests, no general refines inheritance or fetched external metadata. Unsupported write rules return 422 before mutation; invalid configuration returns 503 CONFIGURATION_INVALID. Configuration errors use discovery's categories in Error.error (Error.code remains the HTTP status): 409 CONFIGURATION_SELECTION_UNRESOLVED; 503 CONFIGURATION_NOT_CONFIGURED, CONFIGURATION_UNKNOWN_UI_VERSION, CONFIGURATION_INVALID or CONFIGURATION_SOURCE_UNAVAILABLE. Never return a partial or built-in fallback success or disclose private configuration details.
Required

Responses


deleteConfiguredEntry

Delete a configured entry

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Requires authentication and write permission on the entry and context; cookie-only authentication also requires X-XSRF-TOKEN. Reauthorize the selected type and apply the same matching and marker precedence as getConfiguredEntry. A nonmatch, conflicting/unknown/foreign marker or several markerless matches with no primary type among them is 409, never permission to delete an entry of another configured type. For useWith entries, validate access to the parent. Resolve useWithProperty for the selected child type, using its own value and supported refines fallback, not the parent type. Remove the parent-resource-to-child-resource statement using that predicate as part of deleting the child. Parent reads and writes require authorization. Do not cascade into arbitrary children or remove unrelated parent metadata. Unsupported association configuration fails closed with 503 CONFIGURATION_INVALID before mutation. A blocked relationship or type conflict returns 409. No partial success is reported; compensate a failed association/deletion sequence when possible. Failed compensation returns 503, with residual identifiers only if caller-authorized, and requires reconciliation rather than claiming atomic success. Example request: DELETE /entries/42/101?configured_type=https%3A%2F%2Fexample.org%2Ftypes%2Friver-observations authenticated with X-Auth-Token; success is 204 with no body, not an empty JSON object.


/entries/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/entries/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/&configured_type=https://example.org/types/river-observations"




Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
X-XSRF-TOKEN
String
Required for cookie-only authentication; matches the XSRF-TOKEN cookie.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
configured_type*
String
Selects a configured type by its exact discovery id (canonical URI) or exact, case-sensitive name. An exact id match takes precedence over a name match. Resolve against the effective configuration for this host, context and caller on every request; discovery does not grant permission. Unknown or foreign ids/names return 400; ambiguous names return 409. A configured but inapplicable type returns 403, or 404 when hidden from the caller. This selector never forces a type onto an entry. The canonical type marker http://entryscape.com/terms/entityType belongs to entry information, not user metadata, and takes precedence over RDF matching. A known conflicting marker returns 409 on a single-entry operation. Unknown, foreign or multiple conflicting markers return 409 on single-entry operations and must not be reclassified through a shared RDF class. Without a marker, the entry's type is its one effective match, else the context's primary type among its matches (ConfiguredEntryReference's markerless resolution); no primary among several matches, or a type other than the selected one, returns 409. Lists exclude nonmatching entries. All entry operations use the normalized matching rules documented by ConfiguredEntryReference: own URI constraints/presence tests, no general refines inheritance or fetched external metadata. Unsupported write rules return 422 before mutation; invalid configuration returns 503 CONFIGURATION_INVALID. Configuration errors use discovery's categories in Error.error (Error.code remains the HTTP status): 409 CONFIGURATION_SELECTION_UNRESOLVED; 503 CONFIGURATION_NOT_CONFIGURED, CONFIGURATION_UNKNOWN_UI_VERSION, CONFIGURATION_INVALID or CONFIGURATION_SOURCE_UNAVAILABLE. Never return a partial or built-in fallback success or disclose private configuration details.
Required

Responses


getConfiguredEntry

Get a configured entry reference

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Reads directly by id, without waiting for the list index. Returns a generic reference with canonical configured_type, never a legacy entity enum. Authentication is optional for public entries; invalid credentials return 401. Reauthorize the context, entry and selected type on every call. Missing or hidden resources return 404, known unreadable resources return 403. Apply configured_type matching and marker precedence. A known different marker, a nonmatch, or a markerless entry with several matches and no primary type among them (ConfiguredEntryReference's markerless resolution) returns 409; the caller cannot force the selected type onto the entry. Unknown, foreign or multiple conflicting markers fail with 409 rather than falling back to a common RDF class. An explicit marker is authoritative for classification, not permission to bypass resource or write validation rules. Example request: GET /entries/42/101?configured_type=https%3A%2F%2Fexample.org%2Ftypes%2Friver-observations with Accept: application/json. The ConfiguredEntryReference example is the response.


/entries/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/entries/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/&configured_type=https://example.org/types/river-observations"




Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
configured_type*
String
Selects a configured type by its exact discovery id (canonical URI) or exact, case-sensitive name. An exact id match takes precedence over a name match. Resolve against the effective configuration for this host, context and caller on every request; discovery does not grant permission. Unknown or foreign ids/names return 400; ambiguous names return 409. A configured but inapplicable type returns 403, or 404 when hidden from the caller. This selector never forces a type onto an entry. The canonical type marker http://entryscape.com/terms/entityType belongs to entry information, not user metadata, and takes precedence over RDF matching. A known conflicting marker returns 409 on a single-entry operation. Unknown, foreign or multiple conflicting markers return 409 on single-entry operations and must not be reclassified through a shared RDF class. Without a marker, the entry's type is its one effective match, else the context's primary type among its matches (ConfiguredEntryReference's markerless resolution); no primary among several matches, or a type other than the selected one, returns 409. Lists exclude nonmatching entries. All entry operations use the normalized matching rules documented by ConfiguredEntryReference: own URI constraints/presence tests, no general refines inheritance or fetched external metadata. Unsupported write rules return 422 before mutation; invalid configuration returns 503 CONFIGURATION_INVALID. Configuration errors use discovery's categories in Error.error (Error.code remains the HTTP status): 409 CONFIGURATION_SELECTION_UNRESOLVED; 503 CONFIGURATION_NOT_CONFIGURED, CONFIGURATION_UNKNOWN_UI_VERSION, CONFIGURATION_INVALID or CONFIGURATION_SOURCE_UNAVAILABLE. Never return a partial or built-in fallback success or disclose private configuration details.
Required

Responses


getConfiguredEntryMetadata

Get raw RDF metadata for a configured entry

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Reads the entry's raw metadata graph directly by id, including unknown RDF properties, without waiting for the list index. Authentication is optional for public entries; invalid credentials return 401. Reauthorize context, entry and type. Known unreadable resources return 403; absent/hidden ones 404. Apply the same configured_type matching and marker precedence as getConfiguredEntry; mismatches, unknown/foreign/conflicting markers and several markerless matches with no primary type among them return 409, not RDF-class reclassification. format selects json-ld (default), rdf-json, turtle, n-triples or rdf-xml. GET returns raw RDF, but PUT accepts only an application/json wrapper with metadata containing JSON-LD. A raw GET response is not a PUT request body: serialize as JSON-LD and place the graph under metadata for replacement. The managed configured-type marker lives in entry information, not this graph. Example request: GET /entries/42/101/metadata?configured_type=https%3A%2F%2Fexample.org%2Ftypes%2Friver-observations&format=turtle with Accept: text/turtle. Each response example below serializes the same synthetic graph.


/entries/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/entries/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&configured_type=https://example.org/types/river-observations&format=json-ld"




Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
configured_type*
String
Selects a configured type by its exact discovery id (canonical URI) or exact, case-sensitive name. An exact id match takes precedence over a name match. Resolve against the effective configuration for this host, context and caller on every request; discovery does not grant permission. Unknown or foreign ids/names return 400; ambiguous names return 409. A configured but inapplicable type returns 403, or 404 when hidden from the caller. This selector never forces a type onto an entry. The canonical type marker http://entryscape.com/terms/entityType belongs to entry information, not user metadata, and takes precedence over RDF matching. A known conflicting marker returns 409 on a single-entry operation. Unknown, foreign or multiple conflicting markers return 409 on single-entry operations and must not be reclassified through a shared RDF class. Without a marker, the entry's type is its one effective match, else the context's primary type among its matches (ConfiguredEntryReference's markerless resolution); no primary among several matches, or a type other than the selected one, returns 409. Lists exclude nonmatching entries. All entry operations use the normalized matching rules documented by ConfiguredEntryReference: own URI constraints/presence tests, no general refines inheritance or fetched external metadata. Unsupported write rules return 422 before mutation; invalid configuration returns 503 CONFIGURATION_INVALID. Configuration errors use discovery's categories in Error.error (Error.code remains the HTTP status): 409 CONFIGURATION_SELECTION_UNRESOLVED; 503 CONFIGURATION_NOT_CONFIGURED, CONFIGURATION_UNKNOWN_UI_VERSION, CONFIGURATION_INVALID or CONFIGURATION_SOURCE_UNAVAILABLE. Never return a partial or built-in fallback success or disclose private configuration details.
Required
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listConfiguredEntries

List entries of one configured type

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Lists only entries matching the selected effective configured type in this context. The configured_type selection and matching rules apply before pagination, including marker precedence, ambiguity handling and permissions. Authentication is optional for public data; invalid credentials return 401. Missing or hidden contexts return 404; known unreadable contexts return 403. Apply visibility and type filtering before counting and paging. results is the exact caller-visible matching index total, not the legacy upper bound. limit defaults to 10 and is at most 100. A cursor overrides offset and is bound to host, context, canonical configured type and caller; incompatible cursors return 400. Pagination does not promise a consistent snapshot across writes. Always return next_cursor, null on the last page. The index updates asynchronously: a newly created entry may be absent and a deleted entry may remain temporarily. After writing, read by returned id rather than relying on a list to reflect that write immediately. Example request: GET /entries/42?configured_type=https%3A%2F%2Fexample.org%2Ftypes%2Friver-observations&limit=20&offset=0 with Accept: application/json. The ConfiguredEntryList example is the response.


/entries/{context_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/entries/{context_id}?entrystore_host=dev.entryscape.com/store/&configured_type=https://example.org/types/river-observations&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw"




Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
configured_type*
String
Selects a configured type by its exact discovery id (canonical URI) or exact, case-sensitive name. An exact id match takes precedence over a name match. Resolve against the effective configuration for this host, context and caller on every request; discovery does not grant permission. Unknown or foreign ids/names return 400; ambiguous names return 409. A configured but inapplicable type returns 403, or 404 when hidden from the caller. This selector never forces a type onto an entry. The canonical type marker http://entryscape.com/terms/entityType belongs to entry information, not user metadata, and takes precedence over RDF matching. A known conflicting marker returns 409 on a single-entry operation. Unknown, foreign or multiple conflicting markers return 409 on single-entry operations and must not be reclassified through a shared RDF class. Without a marker, the entry's type is its one effective match, else the context's primary type among its matches (ConfiguredEntryReference's markerless resolution); no primary among several matches, or a type other than the selected one, returns 409. Lists exclude nonmatching entries. All entry operations use the normalized matching rules documented by ConfiguredEntryReference: own URI constraints/presence tests, no general refines inheritance or fetched external metadata. Unsupported write rules return 422 before mutation; invalid configuration returns 503 CONFIGURATION_INVALID. Configuration errors use discovery's categories in Error.error (Error.code remains the HTTP status): 409 CONFIGURATION_SELECTION_UNRESOLVED; 503 CONFIGURATION_NOT_CONFIGURED, CONFIGURATION_UNKNOWN_UI_VERSION, CONFIGURATION_INVALID or CONFIGURATION_SOURCE_UNAVAILABLE. Never return a partial or built-in fallback success or disclose private configuration details.
Required
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.

Responses


replaceConfiguredEntryMetadata

Replace the complete metadata graph of a configured entry

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Accepts only an application/json ConfiguredEntryWrite wrapper containing raw JSON-LD in metadata, with inline contexts only. Raw RDF media types accepted by GET are not accepted as PUT bodies (415). Malformed JSON-LD and remote contexts return 400. This is whole-graph replacement, never a patch: preserve unknown supplied RDF, but remove triples omitted from the replacement. Requires authentication and write access to the context and entry; cookie-only authentication also requires X-XSRF-TOKEN. Reauthorize the selected type and check the existing entry using configured_type matching and marker precedence before any write. Mismatches and unknown/foreign/conflicting markers return 409; a markerless entry resolves as ConfiguredEntryReference describes (one match, else the context's primary type among its matches). The selector cannot force a new type onto an unrelated entry. For a markerless entry, also evaluate the prospective replacement against all applicable effective matchers before mutation. It must still resolve the same way, to the selected type. A newly ambiguous or different resolution returns 409 without replacing the graph; do not strand the entry or backfill a marker. Preserve http://entryscape.com/terms/entityType in entry information exactly; do not create a marker on a markerless entry or rewrite one to another type. Preserve the resource URI and resource kind. resource_uri must be omitted or equal the existing URI; a change is 409. The replacement root @id must match that URI (422 otherwise). resource_kind and parent must be omitted; explicit values return 422 rather than changing resource kind or reparenting. Validate the replacement against the selected type's own RDF matching and constraints and immutable resource rules. uriPattern is used only to generate a URI on creation, not to rename or reject an existing resource on PUT. No general refines inheritance is implied. A marker does not waive validation. Reject invalid metadata or unsupported rules with 422 before mutation; invalid configuration is 503 CONFIGURATION_INVALID. Never alter managed ACL/auth information to satisfy an entry-information constraint. External references are not fetched. Custom validation outcomes are as on create; the 200 body's validation states the outcome. Example request: PUT /entries/42/101/metadata?configured_type=https%3A%2F%2Fexample.org%2Ftypes%2Friver-observations with Content-Type: application/json and the operation's wrapper example below. The ConfiguredEntryReference example is a synthetic 200 response.


/entries/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/json" \
 "https://api.entryscape.com/entries/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&configured_type=https://example.org/types/river-observations" \
 -d '{
  "metadata" : {
    "@context" : {
      "dcat" : "http://www.w3.org/ns/dcat#",
      "dct" : "http://purl.org/dc/terms/"
    },
    "@type" : "dcat:Dataset",
    "dct:type" : {
      "@id" : "https://example.org/concepts/river"
    },
    "dct:title" : {
      "@value" : "River observations",
      "@language" : "en"
    }
  }
}'




Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
X-XSRF-TOKEN
String
Required for cookie-only authentication; matches the XSRF-TOKEN cookie.
Body parameters
Name Description
configuredEntryWrite *

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
configured_type*
String
Selects a configured type by its exact discovery id (canonical URI) or exact, case-sensitive name. An exact id match takes precedence over a name match. Resolve against the effective configuration for this host, context and caller on every request; discovery does not grant permission. Unknown or foreign ids/names return 400; ambiguous names return 409. A configured but inapplicable type returns 403, or 404 when hidden from the caller. This selector never forces a type onto an entry. The canonical type marker http://entryscape.com/terms/entityType belongs to entry information, not user metadata, and takes precedence over RDF matching. A known conflicting marker returns 409 on a single-entry operation. Unknown, foreign or multiple conflicting markers return 409 on single-entry operations and must not be reclassified through a shared RDF class. Without a marker, the entry's type is its one effective match, else the context's primary type among its matches (ConfiguredEntryReference's markerless resolution); no primary among several matches, or a type other than the selected one, returns 409. Lists exclude nonmatching entries. All entry operations use the normalized matching rules documented by ConfiguredEntryReference: own URI constraints/presence tests, no general refines inheritance or fetched external metadata. Unsupported write rules return 422 before mutation; invalid configuration returns 503 CONFIGURATION_INVALID. Configuration errors use discovery's categories in Error.error (Error.code remains the HTTP status): 409 CONFIGURATION_SELECTION_UNRESOLVED; 503 CONFIGURATION_NOT_CONFIGURED, CONFIGURATION_UNKNOWN_UI_VERSION, CONFIGURATION_INVALID or CONFIGURATION_SOURCE_UNAVAILABLE. Never return a partial or built-in fallback success or disclose private configuration details.
Required

Responses


Idea

createIdea

Create idea

Creates a new idea in the specified context. The request body must contain valid metadata in JSON-LD format. Requires authentication with write access to the target context.


/idea

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/idea?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.IdeaApi();
var metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Idea',
  'dct:title': [{ '@value': 'Open Data for Public Transport', '@language': 'en' }],
  'dct:description': [{ '@value': 'An idea for publishing public transport data.', '@language': 'en' }]
};
api.createIdea('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new IdeaApi(config);
const metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Idea',
  'dct:title': [{ '@value': 'Open Data for Public Transport', '@language': 'en' }],
  'dct:description': [{ '@value': 'An idea for publishing public transport data.', '@language': 'en' }],
};
const response = await api.createIdea({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.IdeaApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'esc': 'http://entryscape.com/terms/', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'esc:Idea',
    'dct:title': [{'@value': 'Open Data for Public Transport', '@language': 'en'}],
    'dct:description': [{'@value': 'An idea for publishing public transport data.', '@language': 'en'}],
}
response = api_instance.create_idea(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new IdeaApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esc", "http://entryscape.com/terms/"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "esc:Idea"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Open Data for Public Transport"}, {"@language", "en"}}
    }},
    {"dct:description", new List<object> {
        new Dictionary<string, string> {{"@value", "An idea for publishing public transport data."}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateIdea(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteIdea

Delete idea

Deletes a specific idea and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/idea/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/idea/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.IdeaApi();
api.deleteIdea('1', '100', function(error) {
  if (!error) {
    console.log('Idea deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new IdeaApi(config);
await api.deleteIdea({
  contextId: '1',
  entryId: '100',
});
console.log('Idea deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.IdeaApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_idea(context_id='1', entry_id='100')
print('Idea deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new IdeaApi(config);
apiInstance.DeleteIdea(contextId: "1", entryId: "100");
Debug.WriteLine("Idea deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getIdea

Get idea

Returns basic reference information for a specific idea. Use the /metadata sub-endpoint to retrieve the full metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/idea/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/idea/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.IdeaApi();
api.getIdea('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new IdeaApi(config);
const response = await api.getIdea({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.IdeaApi()
response = api_instance.get_idea(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new IdeaApi();
var response = apiInstance.GetIdea(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getIdeaMetadata

Get idea metadata

Returns raw DCAT-AP metadata for a specific idea. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/idea/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/idea/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.IdeaApi();
api.getIdeaMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new IdeaApi(config);
const response = await api.getIdeaMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.IdeaApi()
response = api_instance.get_idea_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new IdeaApi();
var response = apiInstance.GetIdeaMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listIdeas

List ideas

Returns a paginated list of all ideas. Ideas are early-stage proposals before formal dataset suggestions. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/idea

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/idea?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.IdeaApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listIdeas(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new IdeaApi(config);
const response = await api.listIdeas({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.IdeaApi()
response = api_instance.list_ideas(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new IdeaApi();
var response = apiInstance.ListIdeas(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateIdeaMetadata

Update idea metadata

Replaces the metadata for a specific idea. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/idea/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/idea/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.IdeaApi();
var metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Idea',
  'dct:title': [{ '@value': 'Updated Idea Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated idea description.', '@language': 'en' }]
};
api.updateIdeaMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new IdeaApi(config);
const metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Idea',
  'dct:title': [{ '@value': 'Updated Idea Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated idea description.', '@language': 'en' }],
};
const response = await api.updateIdeaMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.IdeaApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'esc': 'http://entryscape.com/terms/', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'esc:Idea',
    'dct:title': [{'@value': 'Updated Idea Title', '@language': 'en'}],
    'dct:description': [{'@value': 'Updated idea description.', '@language': 'en'}],
}
response = api_instance.update_idea_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new IdeaApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esc", "http://entryscape.com/terms/"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "esc:Idea"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Idea Title"}, {"@language", "en"}}
    }},
    {"dct:description", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated idea description."}, {"@language", "en"}}
    }}
};
var response = apiInstance.UpdateIdeaMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


Job

getJobStatus

Get job status

Returns the current status of an upload job. The job may be in one of the following states: - PENDING: Waiting in queue to be processed - PROCESSING: Currently being processed - SUCCESS: Completed successfully - FAILED: Failed with an error A job may report `warnings`: problems in existing data it wrote back unchanged and did not cause, such as an invalid literal in the stored metadata of the entry it updated, and follow-up writes an upload could not make once its file was stored, such as marking a linking distribution modified or updating a connected API. They come on SUCCESS as well as FAILED. An upload whose file was stored succeeds, so it should not be retried: its warnings say what was left undone. Jobs are retained in history for a limited time after completion. Requires authentication.


/job/{job_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/job/{job_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.JobApi();
api.getJobStatus('job-abc-123', function(error, data) {
  if (!error) {
    console.log('Job ID:', data.jobId);
    console.log('Status:', data.status);
    console.log('Filename:', data.filename);
    if (data.status === 'SUCCESS') {
      console.log('Completed:', data.terminated);
    } else if (data.status === 'FAILED') {
      console.log('Error:', data.error);
    }
  }
});

const api = new JobApi(config);
const response = await api.getJobStatus({
  jobId: 'job-abc-123',
});
console.log('Job ID:', response.jobId);
console.log('Status:', response.status);
console.log('Filename:', response.filename);
if (response.status === 'SUCCESS') {
  console.log('Completed:', response.terminated);
} else if (response.status === 'FAILED') {
  console.log('Error:', response.error);
}

api_instance = entryscape_client.JobApi()
response = api_instance.get_job_status(
    job_id='job-abc-123'
)
print(f'Job ID: {response.job_id}')
print(f'Status: {response.status}')
print(f'Filename: {response.filename}')
if response.status == 'SUCCESS':
    print(f'Completed: {response.terminated}')
elif response.status == 'FAILED':
    print(f'Error: {response.error}')

var apiInstance = new JobApi();
var response = apiInstance.GetJobStatus(
    jobId: "job-abc-123"
);
Debug.WriteLine("Job ID: " + response.JobId);
Debug.WriteLine("Status: " + response.Status);
Debug.WriteLine("Filename: " + response.Filename);
if (response.Status == "SUCCESS")
{
    Debug.WriteLine("Completed: " + response.Terminated);
}
else if (response.Status == "FAILED")
{
    Debug.WriteLine("Error: " + response.Error);
}

Scopes

Parameters

Path parameters
Name Description
job_id*
Long (int64)
Unique identifier for the upload job
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


Model

createModel

Create model

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Creates a new model. A model is provisioned as a new EntryStore context (`esc:FormsContext`); the returned `context_id` is the addressing root for the model's classes, properties, forms, fields, namespaces, diagrams and specifications. An optional request body provides the model's initial descriptive metadata (for example a `dcterms:title`); it may be omitted to create an empty model whose metadata is set later via `PUT /model/{context_id}/metadata`. Requires authentication with permission to create contexts.


/model

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelApi();
var metadata = {
  '@context': { 'dcterms': 'http://purl.org/dc/terms/' },
  'dcterms:title': [{ '@value': 'My Model', '@language': 'en' }]
};
api.createModel({ 'body': metadata }, function(error, data) {
  if (!error) {
    console.log('Created model context:', data.context_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelApi(config);
const metadata = {
  '@context': { dcterms: 'http://purl.org/dc/terms/' },
  'dcterms:title': [{ '@value': 'My Model', '@language': 'en' }],
};
const response = await api.createModel({ body: metadata });
console.log('Created model context:', response.contextId);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcterms': 'http://purl.org/dc/terms/'},
    'dcterms:title': [{'@value': 'My Model', '@language': 'en'}],
}
response = api_instance.create_model(body=metadata)
print(f'Created model context: {response.context_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcterms", "http://purl.org/dc/terms/"}}},
    {"dcterms:title", new List<object> {
        new Dictionary<string, string> {{"@value", "My Model"}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateModel(body: metadata);
Debug.WriteLine("Created model context: " + response.ContextId);
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody

Optional initial descriptive metadata for the model context, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteModel

Delete model

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Deletes a specific model, including the EntryStore context and all of the classes, properties, forms, fields, namespaces, diagrams and specifications it contains. This operation is irreversible. Requires authentication with permission to delete the model's context.


/model/{context_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelApi();
api.deleteModel('8', function(error) {
  if (!error) {
    console.log('Model deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelApi(config);
await api.deleteModel({ contextId: '8' });
console.log('Model deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_model(context_id='8')
print('Model deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelApi(config);
apiInstance.DeleteModel(contextId: "8");
Debug.WriteLine("Model deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModel

Get model

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns basic reference information for a specific model. A model is addressed by its `context_id` (the model is the EntryStore `esc:FormsContext`). Use the `/metadata` sub-endpoint to retrieve the model's full descriptive metadata, and the `/model/{context_id}/classes` endpoints to work with the classes it contains. Authentication is optional. Public models are accessible without authentication. Authenticated requests may access additional non-public models.


/model/{context_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ModelApi();
api.getModel('8', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new ModelApi(config);
const response = await api.getModel({ contextId: '8' });
console.log('Context ID:', response.contextId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.ModelApi()
response = api_instance.get_model(context_id='8')
print(f'Context ID: {response.context_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new ModelApi();
var response = apiInstance.GetModel(contextId: "8");
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelMetadata

Get model metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns the raw descriptive metadata for a specific model (the EntryStore context's metadata). The response serialization can be selected with the `format` query parameter. Authentication is optional. Public models are accessible without authentication. Authenticated requests may access additional non-public models.


/model/{context_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/model/{context_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ModelApi();
api.getModelMetadata('8', function(error, data) {
  if (!error) {
    console.log('Model metadata:', data);
  }
});

const api = new ModelApi(config);
const response = await api.getModelMetadata({ contextId: '8' });
console.log('Model metadata:', response);

api_instance = entryscape_client.ModelApi()
response = api_instance.get_model_metadata(context_id='8')
metadata = response if isinstance(response, dict) else response.to_dict()
print('Model metadata:', metadata)

var apiInstance = new ModelApi();
var response = apiInstance.GetModelMetadata(contextId: "8");
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listModels

List models

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a paginated list of all EntryScape Models (application-profile contexts). A model is an EntryStore context (`esc:FormsContext`) that holds the classes, properties, forms, fields, namespaces, diagrams and specifications that make up an information model, so a model is addressed by its `context_id` alone. Authentication is optional. Without authentication, only publicly available models are returned. Authenticated requests may return additional non-public models. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it.


/model

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z"
var api = new Entryscape.ModelApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listModels(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '] ' + item.entity_type);
    });
  }
});

const api = new ModelApi(config);
const response = await api.listModels({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}] ${item.entityType}`);
}

api_instance = entryscape_client.ModelApi()
response = api_instance.list_models(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}] {item.entity_type}')

var apiInstance = new ModelApi();
var response = apiInstance.ListModels(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant

Responses


updateModelMetadata

Update model metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Replaces the descriptive metadata for a specific model (the EntryStore context's metadata). The body is JSON-LD. This is a full replacement, not a partial update. Requires authentication with write access to the model's context.


/model/{context_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelApi();
var metadata = {
  '@context': { 'dcterms': 'http://purl.org/dc/terms/' },
  'dcterms:title': [{ '@value': 'Updated Model Title', '@language': 'en' }]
};
api.updateModelMetadata('8', metadata, function(error, data) {
  if (!error) {
    console.log('Model metadata updated successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelApi(config);
const metadata = {
  '@context': { dcterms: 'http://purl.org/dc/terms/' },
  'dcterms:title': [{ '@value': 'Updated Model Title', '@language': 'en' }],
};
await api.updateModelMetadata({ contextId: '8', body: metadata });
console.log('Model metadata updated successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'dcterms': 'http://purl.org/dc/terms/'},
    'dcterms:title': [{'@value': 'Updated Model Title', '@language': 'en'}],
}
api_instance.update_model_metadata(context_id='8', body=metadata)
print('Model metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"dcterms", "http://purl.org/dc/terms/"}}},
    {"dcterms:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Model Title"}, {"@language", "en"}}
    }}
};
apiInstance.UpdateModelMetadata(contextId: "8", body: metadata);
Debug.WriteLine("Model metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the model context's current metadata, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


ModelClass

createModelClass

Create model class

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Creates a new class (`rdfs:Class`) within a model. The class is created as an entry in the model's EntryStore context (identified by `context_id`). Name the class with `@id` on the body's subject. The class is then created as a link entry on that IRI, the way the EntryScape Models editor stores classes, and the IRI is the `uri` in the response: the identifier that properties, forms, SHACL shapes and an RDFS export refer to. A body without `@id` still creates the class, under an IRI the store mints (`{store}/{context_id}/resource/{entry_id}`). That IRI can be referenced like any other, but it ties the class's identity to this store's address rather than to a vocabulary namespace you chose, so send `@id` for a class meant to be reused or exported. A body that names its class with `@id` has to describe only that one class at its top level; one that describes several is rejected with 400. The request body is the class's RDF metadata as JSON-LD, for example an `rdfs:label`. Requires authentication with write access to the model's context.


/model/{context_id}/classes

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/classes?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelClassApi();
var metadata = {
  '@context': { 'rdfs': 'http://www.w3.org/2000/01/rdf-schema#' },
  '@id': 'http://example.org/ns#Person',
  '@type': 'rdfs:Class',
  'rdfs:label': [{ '@value': 'Person', '@language': 'en' }]
};
api.createModelClass('8', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelClassApi(config);
const metadata = {
  '@context': { rdfs: 'http://www.w3.org/2000/01/rdf-schema#' },
  '@id': 'http://example.org/ns#Person',
  '@type': 'rdfs:Class',
  'rdfs:label': [{ '@value': 'Person', '@language': 'en' }],
};
const response = await api.createModelClass({ contextId: '8', body: metadata });
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelClassApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'rdfs': 'http://www.w3.org/2000/01/rdf-schema#'},
    '@id': 'http://example.org/ns#Person',
    '@type': 'rdfs:Class',
    'rdfs:label': [{'@value': 'Person', '@language': 'en'}],
}
response = api_instance.create_model_class(context_id='8', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelClassApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"rdfs", "http://www.w3.org/2000/01/rdf-schema#"}}},
    {"@id", "http://example.org/ns#Person"},
    {"@type", "rdfs:Class"},
    {"rdfs:label", new List<object> {
        new Dictionary<string, string> {{"@value", "Person"}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateModelClass(contextId: "8", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

RDF metadata for the new class, as JSON-LD (the MetadataRequest schema). Give the subject an `@id` to set the class's IRI.

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteModelClass

Delete model class

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Deletes a specific class and its metadata from a model. This operation is irreversible. Requires authentication with write access to the model's context.


/model/{context_id}/classes/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/classes/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelClassApi();
api.deleteModelClass('8', '3', function(error) {
  if (!error) {
    console.log('Class deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelClassApi(config);
await api.deleteModelClass({ contextId: '8', entryId: '3' });
console.log('Class deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelClassApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_model_class(context_id='8', entry_id='3')
print('Class deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelClassApi(config);
apiInstance.DeleteModelClass(contextId: "8", entryId: "3");
Debug.WriteLine("Class deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelClass

Get model class

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns basic reference information for a specific class within a model. Use the `/metadata` sub-endpoint to retrieve the class's full RDF metadata. Authentication is optional. Public classes are accessible without authentication. Authenticated requests may access additional non-public classes.


/model/{context_id}/classes/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/classes/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ModelClassApi();
api.getModelClass('8', '3', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
  }
});

const api = new ModelClassApi(config);
const response = await api.getModelClass({ contextId: '8', entryId: '3' });
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);

api_instance = entryscape_client.ModelClassApi()
response = api_instance.get_model_class(context_id='8', entry_id='3')
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')

var apiInstance = new ModelClassApi();
var response = apiInstance.GetModelClass(contextId: "8", entryId: "3");
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelClassMetadata

Get model class metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns the raw RDF metadata for a specific class within a model. The response serialization can be selected with the `format` query parameter. Authentication is optional. Public classes are accessible without authentication. Authenticated requests may access additional non-public classes.


/model/{context_id}/classes/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/model/{context_id}/classes/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ModelClassApi();
api.getModelClassMetadata('8', '3', function(error, data) {
  if (!error) {
    console.log('Class metadata:', data);
  }
});

const api = new ModelClassApi(config);
const response = await api.getModelClassMetadata({ contextId: '8', entryId: '3' });
console.log('Class metadata:', response);

api_instance = entryscape_client.ModelClassApi()
response = api_instance.get_model_class_metadata(context_id='8', entry_id='3')
metadata = response if isinstance(response, dict) else response.to_dict()
print('Class metadata:', metadata)

var apiInstance = new ModelClassApi();
var response = apiInstance.GetModelClassMetadata(contextId: "8", entryId: "3");
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listModelClasses

List model classes

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a paginated list of the classes (`rdfs:Class`) defined in a specific model. Classes are entries within the model's EntryStore context, so they are addressed under the model's `context_id`. Authentication is optional. Without authentication, only publicly available classes are returned. Authenticated requests may return additional non-public classes. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it.


/model/{context_id}/classes

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/classes?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z"
var api = new Entryscape.ModelClassApi();
api.listModelClasses('8', function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new ModelClassApi(config);
const response = await api.listModelClasses({ contextId: '8' });
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.ModelClassApi()
response = api_instance.list_model_classes(context_id='8')
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new ModelClassApi();
var response = apiInstance.ListModelClasses(contextId: "8");
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant

Responses


updateModelClassMetadata

Update model class metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Replaces the RDF metadata for a specific class within a model. The body is JSON-LD. This is a full replacement, not a partial update. A body whose subject has no `@id` is stored as the description of the class itself, under the IRI the class reads back with as its `uri`, so a body built from scratch does not have to repeat it. A body that keeps the `@id` from a previous read is stored as sent. Requires authentication with write access to the model's context.


/model/{context_id}/classes/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/classes/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelClassApi();
var metadata = {
  '@context': { 'rdfs': 'http://www.w3.org/2000/01/rdf-schema#' },
  '@type': 'rdfs:Class',
  'rdfs:label': [{ '@value': 'Organisation', '@language': 'en' }]
};
api.updateModelClassMetadata('8', '3', metadata, function(error, data) {
  if (!error) {
    console.log('Class metadata updated successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelClassApi(config);
const metadata = {
  '@context': { rdfs: 'http://www.w3.org/2000/01/rdf-schema#' },
  '@type': 'rdfs:Class',
  'rdfs:label': [{ '@value': 'Organisation', '@language': 'en' }],
};
await api.updateModelClassMetadata({ contextId: '8', entryId: '3', body: metadata });
console.log('Class metadata updated successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelClassApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'rdfs': 'http://www.w3.org/2000/01/rdf-schema#'},
    '@type': 'rdfs:Class',
    'rdfs:label': [{'@value': 'Organisation', '@language': 'en'}],
}
api_instance.update_model_class_metadata(context_id='8', entry_id='3', body=metadata)
print('Class metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelClassApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"rdfs", "http://www.w3.org/2000/01/rdf-schema#"}}},
    {"@type", "rdfs:Class"},
    {"rdfs:label", new List<object> {
        new Dictionary<string, string> {{"@value", "Organisation"}, {"@language", "en"}}
    }}
};
apiInstance.UpdateModelClassMetadata(contextId: "8", entryId: "3", body: metadata);
Debug.WriteLine("Class metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the class's current metadata, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


ModelDiagram

createModelDiagram

Create model diagram

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Creates a new diagram (`esterms:Diagram (with dcmitype:Image)`) within a model. The diagram is created as an entry in the model's EntryStore context (identified by `context_id`). The entry is a graph entry, the way the EntryScape Models UI creates one: the request body becomes its metadata, and the canvas layout lives in a separate resource graph, read and replaced through `/model/{context_id}/diagrams/{entry_id}/resource`. A new diagram starts with an empty layout, which the UI fills with an automatic layout when it opens it. The request body is the diagram's RDF metadata as JSON-LD. Requires authentication with write access to the model's context.


/model/{context_id}/diagrams

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/diagrams?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelDiagramApi();
var metadata = {
  '@context': { esterms: 'http://entryscape.com/terms/', dcmitype: 'http://purl.org/dc/dcmitype/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': ['esterms:Diagram', 'dcmitype:Image'],
  'dcterms:title': [{ '@value': 'Model overview diagram', '@language': 'en' }]
};
api.createModelDiagram('8', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelDiagramApi(config);
const metadata = {
  '@context': { esterms: 'http://entryscape.com/terms/', dcmitype: 'http://purl.org/dc/dcmitype/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': ['esterms:Diagram', 'dcmitype:Image'],
  'dcterms:title': [{ '@value': 'Model overview diagram', '@language': 'en' }]
};
const response = await api.createModelDiagram({ contextId: '8', body: metadata });
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelDiagramApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'esterms': 'http://entryscape.com/terms/', 'dcmitype': 'http://purl.org/dc/dcmitype/', 'dcterms': 'http://purl.org/dc/terms/'},
    '@type': ['esterms:Diagram', 'dcmitype:Image'],
    'dcterms:title': [{'@value': 'Model overview diagram', '@language': 'en'}],
}
response = api_instance.create_model_diagram(context_id='8', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelDiagramApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esterms", "http://entryscape.com/terms/"}, {"dcmitype", "http://purl.org/dc/dcmitype/"}, {"dcterms", "http://purl.org/dc/terms/"}}},
    {"@type", new List<object> { "esterms:Diagram", "dcmitype:Image" }},
    {"dcterms:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Model overview diagram"}, {"@language", "en"}}
    }},
};
var response = apiInstance.CreateModelDiagram(contextId: "8", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

RDF metadata for the new diagram, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteModelDiagram

Delete model diagram

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Deletes a specific diagram and its metadata from a model. This operation is irreversible. Requires authentication with write access to the model's context.


/model/{context_id}/diagrams/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/diagrams/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelDiagramApi();
api.deleteModelDiagram('8', '5', function(error) {
  if (!error) {
    console.log('Diagram deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelDiagramApi(config);
await api.deleteModelDiagram({ contextId: '8', entryId: '5' });
console.log('Diagram deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelDiagramApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_model_diagram(context_id='8', entry_id='5')
print('Diagram deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelDiagramApi(config);
apiInstance.DeleteModelDiagram(contextId: "8", entryId: "5");
Debug.WriteLine("Diagram deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelDiagram

Get model diagram

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns basic reference information for a specific diagram within a model. Use the `/metadata` sub-endpoint to retrieve the diagram's full RDF metadata. Authentication is optional. Public diagrams are accessible without authentication. Authenticated requests may access additional non-public diagrams.


/model/{context_id}/diagrams/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/diagrams/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ModelDiagramApi();
api.getModelDiagram('8', '5', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
  }
});

const api = new ModelDiagramApi(config);
const response = await api.getModelDiagram({ contextId: '8', entryId: '5' });
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);

api_instance = entryscape_client.ModelDiagramApi()
response = api_instance.get_model_diagram(context_id='8', entry_id='5')
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')

var apiInstance = new ModelDiagramApi();
var response = apiInstance.GetModelDiagram(contextId: "8", entryId: "5");
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelDiagramMetadata

Get model diagram metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns the raw RDF metadata for a specific diagram within a model. The response serialization can be selected with the `format` query parameter. Authentication is optional. Public diagrams are accessible without authentication. Authenticated requests may access additional non-public diagrams.


/model/{context_id}/diagrams/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/model/{context_id}/diagrams/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ModelDiagramApi();
api.getModelDiagramMetadata('8', '5', function(error, data) {
  if (!error) {
    console.log('Diagram metadata:', data);
  }
});

const api = new ModelDiagramApi(config);
const response = await api.getModelDiagramMetadata({ contextId: '8', entryId: '5' });
console.log('Diagram metadata:', response);

api_instance = entryscape_client.ModelDiagramApi()
response = api_instance.get_model_diagram_metadata(context_id='8', entry_id='5')
metadata = response if isinstance(response, dict) else response.to_dict()
print('Diagram metadata:', metadata)

var apiInstance = new ModelDiagramApi();
var response = apiInstance.GetModelDiagramMetadata(contextId: "8", entryId: "5");
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


getModelDiagramResource

Get model diagram layout

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a diagram's resource graph: the canvas layout the EntryScape Models UI draws the diagram from. The metadata endpoint describes the diagram (its type and title); this graph holds where each box and link sits. The response serialization can be selected with the `format` query parameter. The layout is a set of blank nodes, one per box or link, each naming the model entry it draws (`esterms:ofClassEntry`, `esterms:ofFormEntry`, `esterms:ofFieldEntry`, …) and carrying its geometry as a JSON string in `esterms:graphics`. A diagram nobody has laid out yet has an empty graph. Answers 404 for a diagram that is not a graph entry, which is how the API stored diagrams before this operation existed: such a diagram has no layout graph, and the Models UI cannot open it. Recreate it to get one. Authentication is optional. Public diagrams are accessible without authentication. Authenticated requests may access additional non-public diagrams.


/model/{context_id}/diagrams/{entry_id}/resource

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/model/{context_id}/diagrams/{entry_id}/resource?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ModelDiagramApi();
api.getModelDiagramResource('8', '5', function(error, data) {
  if (!error) {
    console.log('Diagram layout:', data);
  }
});

const api = new ModelDiagramApi(config);
const response = await api.getModelDiagramResource({ contextId: '8', entryId: '5' });
console.log('Diagram layout:', response);

api_instance = entryscape_client.ModelDiagramApi()
response = api_instance.get_model_diagram_resource(context_id='8', entry_id='5')
layout = response if isinstance(response, dict) else response.to_dict()
print('Diagram layout:', layout)

var apiInstance = new ModelDiagramApi();
var response = apiInstance.GetModelDiagramResource(contextId: "8", entryId: "5");
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listModelDiagrams

List model diagrams

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a paginated list of the diagrams (`esterms:Diagram (with dcmitype:Image)`) defined in a specific model. Diagrams are entries within the model's EntryStore context, so they are addressed under the model's `context_id`. Authentication is optional. Without authentication, only publicly available diagrams are returned. Authenticated requests may return additional non-public diagrams. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it.


/model/{context_id}/diagrams

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/diagrams?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z"
var api = new Entryscape.ModelDiagramApi();
api.listModelDiagrams('8', function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new ModelDiagramApi(config);
const response = await api.listModelDiagrams({ contextId: '8' });
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.ModelDiagramApi()
response = api_instance.list_model_diagrams(context_id='8')
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new ModelDiagramApi();
var response = apiInstance.ListModelDiagrams(contextId: "8");
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant

Responses


updateModelDiagramMetadata

Update model diagram metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Replaces the RDF metadata for a specific diagram within a model. The body is JSON-LD. This is a full replacement, not a partial update. Requires authentication with write access to the model's context.


/model/{context_id}/diagrams/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/diagrams/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelDiagramApi();
var metadata = {
  '@context': { esterms: 'http://entryscape.com/terms/', dcmitype: 'http://purl.org/dc/dcmitype/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': ['esterms:Diagram', 'dcmitype:Image'],
  'dcterms:title': [{ '@value': 'Updated model diagram', '@language': 'en' }]
};
api.updateModelDiagramMetadata('8', '5', metadata, function(error, data) {
  if (!error) {
    console.log('Diagram metadata updated successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelDiagramApi(config);
const metadata = {
  '@context': { esterms: 'http://entryscape.com/terms/', dcmitype: 'http://purl.org/dc/dcmitype/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': ['esterms:Diagram', 'dcmitype:Image'],
  'dcterms:title': [{ '@value': 'Updated model diagram', '@language': 'en' }]
};
await api.updateModelDiagramMetadata({ contextId: '8', entryId: '5', body: metadata });
console.log('Diagram metadata updated successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelDiagramApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'esterms': 'http://entryscape.com/terms/', 'dcmitype': 'http://purl.org/dc/dcmitype/', 'dcterms': 'http://purl.org/dc/terms/'},
    '@type': ['esterms:Diagram', 'dcmitype:Image'],
    'dcterms:title': [{'@value': 'Updated model diagram', '@language': 'en'}],
}
api_instance.update_model_diagram_metadata(context_id='8', entry_id='5', body=metadata)
print('Diagram metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelDiagramApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esterms", "http://entryscape.com/terms/"}, {"dcmitype", "http://purl.org/dc/dcmitype/"}, {"dcterms", "http://purl.org/dc/terms/"}}},
    {"@type", new List<object> { "esterms:Diagram", "dcmitype:Image" }},
    {"dcterms:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated model diagram"}, {"@language", "en"}}
    }},
};
apiInstance.UpdateModelDiagramMetadata(contextId: "8", entryId: "5", body: metadata);
Debug.WriteLine("Diagram metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the diagram's current metadata, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


updateModelDiagramResource

Replace model diagram layout

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Replaces a diagram's resource graph, the canvas layout the EntryScape Models UI draws it from. This is a full replacement, not a partial update, and the diagram's metadata is left as it is. Blank nodes are kept as blank nodes: unlike a metadata write, the graph is not re-anchored to the diagram's resource URI. Use the Content-Type header to select the RDF serialization: application/ld+json, text/turtle, application/rdf+xml, application/n-triples or application/rdf+json. A JSON-LD body must use an inline `@context`; a remote one is rejected. The other serializations are forwarded to EntryStore verbatim, which parses them. A layout is small — around 300 bytes per box or link, so a diagram of a hundred elements is about 30 KB — and goes through the ordinary request path, not the upload path. Answers 409 for a diagram that is not a graph entry (one the API created before this operation existed): it has no resource graph to replace. Recreate the diagram to get one. Requires authentication with write access to the model's context.


/model/{context_id}/diagrams/{entry_id}/resource

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/diagrams/{entry_id}/resource?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelDiagramApi();
var layout = {
  '@context': { esterms: 'http://entryscape.com/terms/' },
  '@graph': [{
    '@type': 'esterms:ResourceLayout',
    'esterms:ofClassEntry': { '@id': 'https://admin.dataportal.se/store/8/entry/3' },
    'esterms:graphics': '{"position":{"x":120,"y":80}}'
  }]
};
api.updateModelDiagramResource('8', '5', layout, function(error, data) {
  if (!error) {
    console.log('Diagram layout replaced');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelDiagramApi(config);
const layout = {
  '@context': { esterms: 'http://entryscape.com/terms/' },
  '@graph': [{
    '@type': 'esterms:ResourceLayout',
    'esterms:ofClassEntry': { '@id': 'https://admin.dataportal.se/store/8/entry/3' },
    'esterms:graphics': '{"position":{"x":120,"y":80}}'
  }]
};
await api.updateModelDiagramResource({ contextId: '8', entryId: '5', body: layout });
console.log('Diagram layout replaced');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelDiagramApi(
    entryscape_client.ApiClient(configuration)
)
layout = {
    '@context': {'esterms': 'http://entryscape.com/terms/'},
    '@graph': [{
        '@type': 'esterms:ResourceLayout',
        'esterms:ofClassEntry': {'@id': 'https://admin.dataportal.se/store/8/entry/3'},
        'esterms:graphics': '{"position":{"x":120,"y":80}}',
    }],
}
api_instance.update_model_diagram_resource(context_id='8', entry_id='5', body=layout)
print('Diagram layout replaced')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelDiagramApi(config);
var layout = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esterms", "http://entryscape.com/terms/"}}},
    {"@graph", new List<object> {
        new Dictionary<string, object>
        {
            {"@type", "esterms:ResourceLayout"},
            {"esterms:ofClassEntry", new Dictionary<string, string> {{"@id", "https://admin.dataportal.se/store/8/entry/3"}}},
            {"esterms:graphics", "{\"position\":{\"x\":120,\"y\":80}}"},
        }
    }},
};
apiInstance.UpdateModelDiagramResource(contextId: "8", entryId: "5", body: layout);
Debug.WriteLine("Diagram layout replaced");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

The layout graph that replaces the diagram's current one. With Content-Type application/ld+json the body is a JSON-LD document. Raw RDF is also accepted when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json.

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


ModelField

createModelField

Create model field

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Creates a new field (`rdforms.org/terms/Field`) within a model. The field is created as an entry in the model's EntryStore context (identified by `context_id`). The request body is the field's RDF metadata as JSON-LD. Requires authentication with write access to the model's context.


/model/{context_id}/fields

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/fields?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelFieldApi();
var metadata = {
  '@context': { rdforms: 'https://rdforms.org/terms/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': 'rdforms:Field',
  'dcterms:title': [{ '@value': 'Full name field', '@language': 'en' }]
};
api.createModelField('8', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelFieldApi(config);
const metadata = {
  '@context': { rdforms: 'https://rdforms.org/terms/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': 'rdforms:Field',
  'dcterms:title': [{ '@value': 'Full name field', '@language': 'en' }]
};
const response = await api.createModelField({ contextId: '8', body: metadata });
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelFieldApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'rdforms': 'https://rdforms.org/terms/', 'dcterms': 'http://purl.org/dc/terms/'},
    '@type': 'rdforms:Field',
    'dcterms:title': [{'@value': 'Full name field', '@language': 'en'}],
}
response = api_instance.create_model_field(context_id='8', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelFieldApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"rdforms", "https://rdforms.org/terms/"}, {"dcterms", "http://purl.org/dc/terms/"}}},
    {"@type", "rdforms:Field"},
    {"dcterms:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Full name field"}, {"@language", "en"}}
    }},
};
var response = apiInstance.CreateModelField(contextId: "8", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

RDF metadata for the new field, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteModelField

Delete model field

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Deletes a specific field and its metadata from a model. This operation is irreversible. Requires authentication with write access to the model's context.


/model/{context_id}/fields/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/fields/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelFieldApi();
api.deleteModelField('8', '5', function(error) {
  if (!error) {
    console.log('Field deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelFieldApi(config);
await api.deleteModelField({ contextId: '8', entryId: '5' });
console.log('Field deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelFieldApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_model_field(context_id='8', entry_id='5')
print('Field deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelFieldApi(config);
apiInstance.DeleteModelField(contextId: "8", entryId: "5");
Debug.WriteLine("Field deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelField

Get model field

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns basic reference information for a specific field within a model. Use the `/metadata` sub-endpoint to retrieve the field's full RDF metadata. Authentication is optional. Public fields are accessible without authentication. Authenticated requests may access additional non-public fields.


/model/{context_id}/fields/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/fields/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ModelFieldApi();
api.getModelField('8', '5', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
  }
});

const api = new ModelFieldApi(config);
const response = await api.getModelField({ contextId: '8', entryId: '5' });
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);

api_instance = entryscape_client.ModelFieldApi()
response = api_instance.get_model_field(context_id='8', entry_id='5')
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')

var apiInstance = new ModelFieldApi();
var response = apiInstance.GetModelField(contextId: "8", entryId: "5");
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelFieldMetadata

Get model field metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns the raw RDF metadata for a specific field within a model. The response serialization can be selected with the `format` query parameter. Authentication is optional. Public fields are accessible without authentication. Authenticated requests may access additional non-public fields.


/model/{context_id}/fields/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/model/{context_id}/fields/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ModelFieldApi();
api.getModelFieldMetadata('8', '5', function(error, data) {
  if (!error) {
    console.log('Field metadata:', data);
  }
});

const api = new ModelFieldApi(config);
const response = await api.getModelFieldMetadata({ contextId: '8', entryId: '5' });
console.log('Field metadata:', response);

api_instance = entryscape_client.ModelFieldApi()
response = api_instance.get_model_field_metadata(context_id='8', entry_id='5')
metadata = response if isinstance(response, dict) else response.to_dict()
print('Field metadata:', metadata)

var apiInstance = new ModelFieldApi();
var response = apiInstance.GetModelFieldMetadata(contextId: "8", entryId: "5");
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listModelFields

List model fields

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a paginated list of the fields (`rdforms.org/terms/Field`) defined in a specific model. Fields are entries within the model's EntryStore context, so they are addressed under the model's `context_id`. Authentication is optional. Without authentication, only publicly available fields are returned. Authenticated requests may return additional non-public fields. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it.


/model/{context_id}/fields

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/fields?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z"
var api = new Entryscape.ModelFieldApi();
api.listModelFields('8', function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new ModelFieldApi(config);
const response = await api.listModelFields({ contextId: '8' });
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.ModelFieldApi()
response = api_instance.list_model_fields(context_id='8')
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new ModelFieldApi();
var response = apiInstance.ListModelFields(contextId: "8");
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant

Responses


updateModelFieldMetadata

Update model field metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Replaces the RDF metadata for a specific field within a model. The body is JSON-LD. This is a full replacement, not a partial update. Requires authentication with write access to the model's context.


/model/{context_id}/fields/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/fields/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelFieldApi();
var metadata = {
  '@context': { rdforms: 'https://rdforms.org/terms/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': 'rdforms:Field',
  'dcterms:title': [{ '@value': 'Legal name field', '@language': 'en' }]
};
api.updateModelFieldMetadata('8', '5', metadata, function(error, data) {
  if (!error) {
    console.log('Field metadata updated successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelFieldApi(config);
const metadata = {
  '@context': { rdforms: 'https://rdforms.org/terms/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': 'rdforms:Field',
  'dcterms:title': [{ '@value': 'Legal name field', '@language': 'en' }]
};
await api.updateModelFieldMetadata({ contextId: '8', entryId: '5', body: metadata });
console.log('Field metadata updated successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelFieldApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'rdforms': 'https://rdforms.org/terms/', 'dcterms': 'http://purl.org/dc/terms/'},
    '@type': 'rdforms:Field',
    'dcterms:title': [{'@value': 'Legal name field', '@language': 'en'}],
}
api_instance.update_model_field_metadata(context_id='8', entry_id='5', body=metadata)
print('Field metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelFieldApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"rdforms", "https://rdforms.org/terms/"}, {"dcterms", "http://purl.org/dc/terms/"}}},
    {"@type", "rdforms:Field"},
    {"dcterms:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Legal name field"}, {"@language", "en"}}
    }},
};
apiInstance.UpdateModelFieldMetadata(contextId: "8", entryId: "5", body: metadata);
Debug.WriteLine("Field metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the field's current metadata, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


ModelForm

createModelForm

Create model form

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Creates a new form (`rdforms.org/terms/Form`) within a model. The form is created as an entry in the model's EntryStore context (identified by `context_id`). The request body is the form's RDF metadata as JSON-LD. Requires authentication with write access to the model's context.


/model/{context_id}/forms

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/forms?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelFormApi();
var metadata = {
  '@context': { rdforms: 'https://rdforms.org/terms/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': 'rdforms:Form',
  'dcterms:title': [{ '@value': 'Person form', '@language': 'en' }]
};
api.createModelForm('8', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelFormApi(config);
const metadata = {
  '@context': { rdforms: 'https://rdforms.org/terms/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': 'rdforms:Form',
  'dcterms:title': [{ '@value': 'Person form', '@language': 'en' }]
};
const response = await api.createModelForm({ contextId: '8', body: metadata });
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelFormApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'rdforms': 'https://rdforms.org/terms/', 'dcterms': 'http://purl.org/dc/terms/'},
    '@type': 'rdforms:Form',
    'dcterms:title': [{'@value': 'Person form', '@language': 'en'}],
}
response = api_instance.create_model_form(context_id='8', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelFormApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"rdforms", "https://rdforms.org/terms/"}, {"dcterms", "http://purl.org/dc/terms/"}}},
    {"@type", "rdforms:Form"},
    {"dcterms:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Person form"}, {"@language", "en"}}
    }},
};
var response = apiInstance.CreateModelForm(contextId: "8", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

RDF metadata for the new form, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteModelForm

Delete model form

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Deletes a specific form and its metadata from a model. This operation is irreversible. Requires authentication with write access to the model's context.


/model/{context_id}/forms/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/forms/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelFormApi();
api.deleteModelForm('8', '5', function(error) {
  if (!error) {
    console.log('Form deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelFormApi(config);
await api.deleteModelForm({ contextId: '8', entryId: '5' });
console.log('Form deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelFormApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_model_form(context_id='8', entry_id='5')
print('Form deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelFormApi(config);
apiInstance.DeleteModelForm(contextId: "8", entryId: "5");
Debug.WriteLine("Form deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelForm

Get model form

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns basic reference information for a specific form within a model. Use the `/metadata` sub-endpoint to retrieve the form's full RDF metadata. Authentication is optional. Public forms are accessible without authentication. Authenticated requests may access additional non-public forms.


/model/{context_id}/forms/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/forms/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ModelFormApi();
api.getModelForm('8', '5', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
  }
});

const api = new ModelFormApi(config);
const response = await api.getModelForm({ contextId: '8', entryId: '5' });
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);

api_instance = entryscape_client.ModelFormApi()
response = api_instance.get_model_form(context_id='8', entry_id='5')
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')

var apiInstance = new ModelFormApi();
var response = apiInstance.GetModelForm(contextId: "8", entryId: "5");
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelFormMetadata

Get model form metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns the raw RDF metadata for a specific form within a model. The response serialization can be selected with the `format` query parameter. Authentication is optional. Public forms are accessible without authentication. Authenticated requests may access additional non-public forms.


/model/{context_id}/forms/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/model/{context_id}/forms/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ModelFormApi();
api.getModelFormMetadata('8', '5', function(error, data) {
  if (!error) {
    console.log('Form metadata:', data);
  }
});

const api = new ModelFormApi(config);
const response = await api.getModelFormMetadata({ contextId: '8', entryId: '5' });
console.log('Form metadata:', response);

api_instance = entryscape_client.ModelFormApi()
response = api_instance.get_model_form_metadata(context_id='8', entry_id='5')
metadata = response if isinstance(response, dict) else response.to_dict()
print('Form metadata:', metadata)

var apiInstance = new ModelFormApi();
var response = apiInstance.GetModelFormMetadata(contextId: "8", entryId: "5");
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listModelForms

List model forms

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a paginated list of the forms (`rdforms.org/terms/Form`) defined in a specific model. Forms are entries within the model's EntryStore context, so they are addressed under the model's `context_id`. Authentication is optional. Without authentication, only publicly available forms are returned. Authenticated requests may return additional non-public forms. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it.


/model/{context_id}/forms

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/forms?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z"
var api = new Entryscape.ModelFormApi();
api.listModelForms('8', function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new ModelFormApi(config);
const response = await api.listModelForms({ contextId: '8' });
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.ModelFormApi()
response = api_instance.list_model_forms(context_id='8')
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new ModelFormApi();
var response = apiInstance.ListModelForms(contextId: "8");
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant

Responses


updateModelFormMetadata

Update model form metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Replaces the RDF metadata for a specific form within a model. The body is JSON-LD. This is a full replacement, not a partial update. Requires authentication with write access to the model's context.


/model/{context_id}/forms/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/forms/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelFormApi();
var metadata = {
  '@context': { rdforms: 'https://rdforms.org/terms/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': 'rdforms:Form',
  'dcterms:title': [{ '@value': 'Organisation form', '@language': 'en' }]
};
api.updateModelFormMetadata('8', '5', metadata, function(error, data) {
  if (!error) {
    console.log('Form metadata updated successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelFormApi(config);
const metadata = {
  '@context': { rdforms: 'https://rdforms.org/terms/', dcterms: 'http://purl.org/dc/terms/' },
  '@type': 'rdforms:Form',
  'dcterms:title': [{ '@value': 'Organisation form', '@language': 'en' }]
};
await api.updateModelFormMetadata({ contextId: '8', entryId: '5', body: metadata });
console.log('Form metadata updated successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelFormApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'rdforms': 'https://rdforms.org/terms/', 'dcterms': 'http://purl.org/dc/terms/'},
    '@type': 'rdforms:Form',
    'dcterms:title': [{'@value': 'Organisation form', '@language': 'en'}],
}
api_instance.update_model_form_metadata(context_id='8', entry_id='5', body=metadata)
print('Form metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelFormApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"rdforms", "https://rdforms.org/terms/"}, {"dcterms", "http://purl.org/dc/terms/"}}},
    {"@type", "rdforms:Form"},
    {"dcterms:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Organisation form"}, {"@language", "en"}}
    }},
};
apiInstance.UpdateModelFormMetadata(contextId: "8", entryId: "5", body: metadata);
Debug.WriteLine("Form metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the form's current metadata, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


ModelNamespace

createModelNamespace

Create model namespace

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Creates a new namespace (`sh:PrefixDeclaration`) within a model. The namespace is created as an entry in the model's EntryStore context (identified by `context_id`). The request body is the namespace's RDF metadata as JSON-LD. Requires authentication with write access to the model's context.


/model/{context_id}/namespaces

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/namespaces?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelNamespaceApi();
var metadata = {
  '@context': { sh: 'http://www.w3.org/ns/shacl#', xsd: 'http://www.w3.org/2001/XMLSchema#' },
  '@type': 'sh:PrefixDeclaration',
  'sh:prefix': 'foaf',
  'sh:namespace': { '@value': 'http://xmlns.com/foaf/0.1/', '@type': 'xsd:anyURI' }
};
api.createModelNamespace('8', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelNamespaceApi(config);
const metadata = {
  '@context': { sh: 'http://www.w3.org/ns/shacl#', xsd: 'http://www.w3.org/2001/XMLSchema#' },
  '@type': 'sh:PrefixDeclaration',
  'sh:prefix': 'foaf',
  'sh:namespace': { '@value': 'http://xmlns.com/foaf/0.1/', '@type': 'xsd:anyURI' }
};
const response = await api.createModelNamespace({ contextId: '8', body: metadata });
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelNamespaceApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'sh': 'http://www.w3.org/ns/shacl#', 'xsd': 'http://www.w3.org/2001/XMLSchema#'},
    '@type': 'sh:PrefixDeclaration',
    'sh:prefix': 'foaf',
    'sh:namespace': {'@value': 'http://xmlns.com/foaf/0.1/', '@type': 'xsd:anyURI'},
}
response = api_instance.create_model_namespace(context_id='8', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelNamespaceApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"sh", "http://www.w3.org/ns/shacl#"}, {"xsd", "http://www.w3.org/2001/XMLSchema#"}}},
    {"@type", "sh:PrefixDeclaration"},
    {"sh:prefix", "foaf"},
    {"sh:namespace", new Dictionary<string, string> {{"@value", "http://xmlns.com/foaf/0.1/"}, {"@type", "xsd:anyURI"}}},
};
var response = apiInstance.CreateModelNamespace(contextId: "8", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

RDF metadata for the new namespace, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteModelNamespace

Delete model namespace

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Deletes a specific namespace and its metadata from a model. This operation is irreversible. Requires authentication with write access to the model's context.


/model/{context_id}/namespaces/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/namespaces/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelNamespaceApi();
api.deleteModelNamespace('8', '5', function(error) {
  if (!error) {
    console.log('Namespace deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelNamespaceApi(config);
await api.deleteModelNamespace({ contextId: '8', entryId: '5' });
console.log('Namespace deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelNamespaceApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_model_namespace(context_id='8', entry_id='5')
print('Namespace deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelNamespaceApi(config);
apiInstance.DeleteModelNamespace(contextId: "8", entryId: "5");
Debug.WriteLine("Namespace deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelNamespace

Get model namespace

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns basic reference information for a specific namespace within a model. Use the `/metadata` sub-endpoint to retrieve the namespace's full RDF metadata. Authentication is optional. Public namespaces are accessible without authentication. Authenticated requests may access additional non-public namespaces.


/model/{context_id}/namespaces/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/namespaces/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ModelNamespaceApi();
api.getModelNamespace('8', '5', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
  }
});

const api = new ModelNamespaceApi(config);
const response = await api.getModelNamespace({ contextId: '8', entryId: '5' });
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);

api_instance = entryscape_client.ModelNamespaceApi()
response = api_instance.get_model_namespace(context_id='8', entry_id='5')
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')

var apiInstance = new ModelNamespaceApi();
var response = apiInstance.GetModelNamespace(contextId: "8", entryId: "5");
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelNamespaceMetadata

Get model namespace metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns the raw RDF metadata for a specific namespace within a model. The response serialization can be selected with the `format` query parameter. Authentication is optional. Public namespaces are accessible without authentication. Authenticated requests may access additional non-public namespaces.


/model/{context_id}/namespaces/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/model/{context_id}/namespaces/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ModelNamespaceApi();
api.getModelNamespaceMetadata('8', '5', function(error, data) {
  if (!error) {
    console.log('Namespace metadata:', data);
  }
});

const api = new ModelNamespaceApi(config);
const response = await api.getModelNamespaceMetadata({ contextId: '8', entryId: '5' });
console.log('Namespace metadata:', response);

api_instance = entryscape_client.ModelNamespaceApi()
response = api_instance.get_model_namespace_metadata(context_id='8', entry_id='5')
metadata = response if isinstance(response, dict) else response.to_dict()
print('Namespace metadata:', metadata)

var apiInstance = new ModelNamespaceApi();
var response = apiInstance.GetModelNamespaceMetadata(contextId: "8", entryId: "5");
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listModelNamespaces

List model namespaces

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a paginated list of the namespaces (`sh:PrefixDeclaration`) defined in a specific model. Namespaces are entries within the model's EntryStore context, so they are addressed under the model's `context_id`. Authentication is optional. Without authentication, only publicly available namespaces are returned. Authenticated requests may return additional non-public namespaces. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it.


/model/{context_id}/namespaces

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/namespaces?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z"
var api = new Entryscape.ModelNamespaceApi();
api.listModelNamespaces('8', function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new ModelNamespaceApi(config);
const response = await api.listModelNamespaces({ contextId: '8' });
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.ModelNamespaceApi()
response = api_instance.list_model_namespaces(context_id='8')
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new ModelNamespaceApi();
var response = apiInstance.ListModelNamespaces(contextId: "8");
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant

Responses


updateModelNamespaceMetadata

Update model namespace metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Replaces the RDF metadata for a specific namespace within a model. The body is JSON-LD. This is a full replacement, not a partial update. Requires authentication with write access to the model's context.


/model/{context_id}/namespaces/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/namespaces/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelNamespaceApi();
var metadata = {
  '@context': { sh: 'http://www.w3.org/ns/shacl#', xsd: 'http://www.w3.org/2001/XMLSchema#' },
  '@type': 'sh:PrefixDeclaration',
  'sh:prefix': 'dcterms',
  'sh:namespace': { '@value': 'http://purl.org/dc/terms/', '@type': 'xsd:anyURI' }
};
api.updateModelNamespaceMetadata('8', '5', metadata, function(error, data) {
  if (!error) {
    console.log('Namespace metadata updated successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelNamespaceApi(config);
const metadata = {
  '@context': { sh: 'http://www.w3.org/ns/shacl#', xsd: 'http://www.w3.org/2001/XMLSchema#' },
  '@type': 'sh:PrefixDeclaration',
  'sh:prefix': 'dcterms',
  'sh:namespace': { '@value': 'http://purl.org/dc/terms/', '@type': 'xsd:anyURI' }
};
await api.updateModelNamespaceMetadata({ contextId: '8', entryId: '5', body: metadata });
console.log('Namespace metadata updated successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelNamespaceApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'sh': 'http://www.w3.org/ns/shacl#', 'xsd': 'http://www.w3.org/2001/XMLSchema#'},
    '@type': 'sh:PrefixDeclaration',
    'sh:prefix': 'dcterms',
    'sh:namespace': {'@value': 'http://purl.org/dc/terms/', '@type': 'xsd:anyURI'},
}
api_instance.update_model_namespace_metadata(context_id='8', entry_id='5', body=metadata)
print('Namespace metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelNamespaceApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"sh", "http://www.w3.org/ns/shacl#"}, {"xsd", "http://www.w3.org/2001/XMLSchema#"}}},
    {"@type", "sh:PrefixDeclaration"},
    {"sh:prefix", "dcterms"},
    {"sh:namespace", new Dictionary<string, string> {{"@value", "http://purl.org/dc/terms/"}, {"@type", "xsd:anyURI"}}},
};
apiInstance.UpdateModelNamespaceMetadata(contextId: "8", entryId: "5", body: metadata);
Debug.WriteLine("Namespace metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the namespace's current metadata, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


ModelProperty

createModelProperty

Create model property

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Creates a new property (`rdf:Property`) within a model. The property is created as an entry in the model's EntryStore context (identified by `context_id`). Name the property with `@id` on the body's subject. The property is then created as a link entry on that IRI, the way the EntryScape Models editor stores properties, and the IRI is the `uri` in the response: the identifier that classes, forms, SHACL shapes and an RDFS export refer to. A body without `@id` still creates the property, under an IRI the store mints (`{store}/{context_id}/resource/{entry_id}`). That IRI can be referenced like any other, but it ties the property's identity to this store's address rather than to a vocabulary namespace you chose, so send `@id` for a property meant to be reused or exported. A body that names its property with `@id` has to describe only that one property at its top level; one that describes several is rejected with 400. The request body is the property's RDF metadata as JSON-LD, for example an `rdfs:label`. Requires authentication with write access to the model's context.


/model/{context_id}/properties

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/properties?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelPropertyApi();
var metadata = {
  '@context': {
    'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
    'rdfs': 'http://www.w3.org/2000/01/rdf-schema#'
  },
  '@id': 'http://example.org/ns#fullName',
  '@type': 'rdf:Property',
  'rdfs:label': [{ '@value': 'Full name', '@language': 'en' }]
};
api.createModelProperty('8', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelPropertyApi(config);
const metadata = {
  '@context': {
    rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
    rdfs: 'http://www.w3.org/2000/01/rdf-schema#',
  },
  '@id': 'http://example.org/ns#fullName',
  '@type': 'rdf:Property',
  'rdfs:label': [{ '@value': 'Full name', '@language': 'en' }],
};
const response = await api.createModelProperty({ contextId: '8', body: metadata });
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelPropertyApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {
        'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
        'rdfs': 'http://www.w3.org/2000/01/rdf-schema#',
    },
    '@id': 'http://example.org/ns#fullName',
    '@type': 'rdf:Property',
    'rdfs:label': [{'@value': 'Full name', '@language': 'en'}],
}
response = api_instance.create_model_property(context_id='8', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelPropertyApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {
        {"rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"},
        {"rdfs", "http://www.w3.org/2000/01/rdf-schema#"}
    }},
    {"@id", "http://example.org/ns#fullName"},
    {"@type", "rdf:Property"},
    {"rdfs:label", new List<object> {
        new Dictionary<string, string> {{"@value", "Full name"}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateModelProperty(contextId: "8", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

RDF metadata for the new property, as JSON-LD (the MetadataRequest schema). Give the subject an `@id` to set the property's IRI.

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteModelProperty

Delete model property

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Deletes a specific property and its metadata from a model. This operation is irreversible. Requires authentication with write access to the model's context.


/model/{context_id}/properties/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/properties/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelPropertyApi();
api.deleteModelProperty('8', '5', function(error) {
  if (!error) {
    console.log('Property deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelPropertyApi(config);
await api.deleteModelProperty({ contextId: '8', entryId: '5' });
console.log('Property deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelPropertyApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_model_property(context_id='8', entry_id='5')
print('Property deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelPropertyApi(config);
apiInstance.DeleteModelProperty(contextId: "8", entryId: "5");
Debug.WriteLine("Property deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelProperty

Get model property

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns basic reference information for a specific property within a model. Use the `/metadata` sub-endpoint to retrieve the property's full RDF metadata. Authentication is optional. Public properties are accessible without authentication. Authenticated requests may access additional non-public properties.


/model/{context_id}/properties/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/properties/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ModelPropertyApi();
api.getModelProperty('8', '5', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
  }
});

const api = new ModelPropertyApi(config);
const response = await api.getModelProperty({ contextId: '8', entryId: '5' });
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);

api_instance = entryscape_client.ModelPropertyApi()
response = api_instance.get_model_property(context_id='8', entry_id='5')
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')

var apiInstance = new ModelPropertyApi();
var response = apiInstance.GetModelProperty(contextId: "8", entryId: "5");
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getModelPropertyMetadata

Get model property metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns the raw RDF metadata for a specific property within a model. The response serialization can be selected with the `format` query parameter. Authentication is optional. Public properties are accessible without authentication. Authenticated requests may access additional non-public properties.


/model/{context_id}/properties/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/model/{context_id}/properties/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ModelPropertyApi();
api.getModelPropertyMetadata('8', '5', function(error, data) {
  if (!error) {
    console.log('Property metadata:', data);
  }
});

const api = new ModelPropertyApi(config);
const response = await api.getModelPropertyMetadata({ contextId: '8', entryId: '5' });
console.log('Property metadata:', response);

api_instance = entryscape_client.ModelPropertyApi()
response = api_instance.get_model_property_metadata(context_id='8', entry_id='5')
metadata = response if isinstance(response, dict) else response.to_dict()
print('Property metadata:', metadata)

var apiInstance = new ModelPropertyApi();
var response = apiInstance.GetModelPropertyMetadata(contextId: "8", entryId: "5");
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listModelProperties

List model properties

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Returns a paginated list of the properties (`rdf:Property`) defined in a specific model. Properties are entries within the model's EntryStore context, so they are addressed under the model's `context_id`. Authentication is optional. Without authentication, only publicly available properties are returned. Authenticated requests may return additional non-public properties. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it.


/model/{context_id}/properties

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/model/{context_id}/properties?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z"
var api = new Entryscape.ModelPropertyApi();
api.listModelProperties('8', function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new ModelPropertyApi(config);
const response = await api.listModelProperties({ contextId: '8' });
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.ModelPropertyApi()
response = api_instance.list_model_properties(context_id='8')
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new ModelPropertyApi();
var response = apiInstance.ListModelProperties(contextId: "8");
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant

Responses


updateModelPropertyMetadata

Update model property metadata

**Alpha:** paths and shapes may change, or this operation may be withdrawn, in any release — no deprecation period. Replaces the RDF metadata for a specific property within a model. The body is JSON-LD. This is a full replacement, not a partial update. A body whose subject has no `@id` is stored as the description of the property itself, under the IRI the property reads back with as its `uri`, so a body built from scratch does not have to repeat it. A body that keeps the `@id` from a previous read is stored as sent. Requires authentication with write access to the model's context.


/model/{context_id}/properties/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/model/{context_id}/properties/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ModelPropertyApi();
var metadata = {
  '@context': {
    'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
    'rdfs': 'http://www.w3.org/2000/01/rdf-schema#'
  },
  '@type': 'rdf:Property',
  'rdfs:label': [{ '@value': 'Legal name', '@language': 'en' }]
};
api.updateModelPropertyMetadata('8', '5', metadata, function(error, data) {
  if (!error) {
    console.log('Property metadata updated successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ModelPropertyApi(config);
const metadata = {
  '@context': {
    rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
    rdfs: 'http://www.w3.org/2000/01/rdf-schema#',
  },
  '@type': 'rdf:Property',
  'rdfs:label': [{ '@value': 'Legal name', '@language': 'en' }],
};
await api.updateModelPropertyMetadata({ contextId: '8', entryId: '5', body: metadata });
console.log('Property metadata updated successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ModelPropertyApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {
        'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
        'rdfs': 'http://www.w3.org/2000/01/rdf-schema#',
    },
    '@type': 'rdf:Property',
    'rdfs:label': [{'@value': 'Legal name', '@language': 'en'}],
}
api_instance.update_model_property_metadata(context_id='8', entry_id='5', body=metadata)
print('Property metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ModelPropertyApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {
        {"rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"},
        {"rdfs", "http://www.w3.org/2000/01/rdf-schema#"}
    }},
    {"@type", "rdf:Property"},
    {"rdfs:label", new List<object> {
        new Dictionary<string, string> {{"@value", "Legal name"}, {"@language", "en"}}
    }}
};
apiInstance.UpdateModelPropertyMetadata(contextId: "8", entryId: "5", body: metadata);
Debug.WriteLine("Property metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the property's current metadata, as JSON-LD (the MetadataRequest schema).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


Organization

createOrganization

Create organization

Creates a new organization in the specified context. The request body must contain valid FOAF metadata in JSON-LD format. Requires authentication with write access to the target context.


/organization

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/organization?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.OrganizationApi();
var metadata = {
  '@context': { foaf: 'http://xmlns.com/foaf/0.1/', vcard: 'http://www.w3.org/2006/vcard/ns#' },
  '@type': 'foaf:Agent',
  'foaf:name': [{ '@value': 'My Organization', '@language': 'en' }],
  'vcard:hasTelephone': { '@id': 'tel:+46701234567' }
};
api.createOrganization('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new OrganizationApi(config);
const metadata = {
  '@context': { foaf: 'http://xmlns.com/foaf/0.1/', vcard: 'http://www.w3.org/2006/vcard/ns#' },
  '@type': 'foaf:Agent',
  'foaf:name': [{ '@value': 'My Organization', '@language': 'en' }],
  'vcard:hasTelephone': { '@id': 'tel:+46701234567' },
};
const response = await api.createOrganization({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.OrganizationApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'foaf': 'http://xmlns.com/foaf/0.1/', 'vcard': 'http://www.w3.org/2006/vcard/ns#'},
    '@type': 'foaf:Agent',
    'foaf:name': [{'@value': 'My Organization', '@language': 'en'}],
    'vcard:hasTelephone': {'@id': 'tel:+46701234567'},
}
response = api_instance.create_organization(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new OrganizationApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"foaf", "http://xmlns.com/foaf/0.1/"}}},
    {"@type", "foaf:Agent"},
    {"foaf:name", new List<object> {
        new Dictionary<string, string> {{"@value", "My Organization"}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateOrganization(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteOrganization

Delete organization

Deletes a specific organization and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/organization/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/organization/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.OrganizationApi();
api.deleteOrganization('1', '100', function(error) {
  if (!error) {
    console.log('Organization deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new OrganizationApi(config);
await api.deleteOrganization({
  contextId: '1',
  entryId: '100',
});
console.log('Organization deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.OrganizationApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_organization(context_id='1', entry_id='100')
print('Organization deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new OrganizationApi(config);
apiInstance.DeleteOrganization(contextId: "1", entryId: "100");
Debug.WriteLine("Organization deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getOrganization

Get organization

Returns basic reference information for a specific organization. Use the /metadata sub-endpoint to retrieve the full FOAF metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/organization/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/organization/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.OrganizationApi();
api.getOrganization('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new OrganizationApi(config);
const response = await api.getOrganization({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.OrganizationApi()
response = api_instance.get_organization(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new OrganizationApi();
var response = apiInstance.GetOrganization(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getOrganizationMetadata

Get organization metadata

Returns raw DCAT-AP metadata for a specific organization. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/organization/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/organization/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.OrganizationApi();
api.getOrganizationMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new OrganizationApi(config);
const response = await api.getOrganizationMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.OrganizationApi()
response = api_instance.get_organization_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new OrganizationApi();
var response = apiInstance.GetOrganizationMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listOrganizations

List organizations

Returns a paginated list of all organizations (publishers). Organizations are agents responsible for making resources available. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/organization

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/organization?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.OrganizationApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listOrganizations(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new OrganizationApi(config);
const response = await api.listOrganizations({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.OrganizationApi()
response = api_instance.list_organizations(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new OrganizationApi();
var response = apiInstance.ListOrganizations(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateOrganizationMetadata

Update organization metadata

Replaces the FOAF metadata for a specific organization. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/organization/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/organization/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.OrganizationApi();
var metadata = {
  '@context': { foaf: 'http://xmlns.com/foaf/0.1/', vcard: 'http://www.w3.org/2006/vcard/ns#' },
  '@type': 'foaf:Agent',
  'foaf:name': [{ '@value': 'Updated Organization Name', '@language': 'en' }],
  'vcard:hasTelephone': { '@id': 'tel:+46701234567' }
};
api.updateOrganizationMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new OrganizationApi(config);
const metadata = {
  '@context': { foaf: 'http://xmlns.com/foaf/0.1/', vcard: 'http://www.w3.org/2006/vcard/ns#' },
  '@type': 'foaf:Agent',
  'foaf:name': [{ '@value': 'Updated Organization Name', '@language': 'en' }],
  'vcard:hasTelephone': { '@id': 'tel:+46701234567' },
};
const response = await api.updateOrganizationMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.OrganizationApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'foaf': 'http://xmlns.com/foaf/0.1/', 'vcard': 'http://www.w3.org/2006/vcard/ns#'},
    '@type': 'foaf:Agent',
    'foaf:name': [{'@value': 'Updated Organization Name', '@language': 'en'}],
    'vcard:hasTelephone': {'@id': 'tel:+46701234567'},
}
response = api_instance.update_organization_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new OrganizationApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"foaf", "http://xmlns.com/foaf/0.1/"}}},
    {"@type", "foaf:Agent"},
    {"foaf:name", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Organization Name"}, {"@language", "en"}}
    }}
};
var response = apiInstance.UpdateOrganizationMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


validateOrganization

Validate organization metadata

Retrieves the stored metadata for this organization entry from EntryStore and validates it against the SHACL shapes for the requested profile (a DCAT-AP profile, or the domain's custom shapes with profile=custom). No request body is needed — the endpoint operates on the entry's existing metadata, similar to how the `/metadata` endpoint returns it. Returns a detailed report with any violations, warnings, or informational findings. A 200 response with `conforms: false` is expected when the metadata has issues — it means validation completed successfully. `conforms: true` alone does not mean the metadata was checked. If no shape in the profile targets the entry — usually because its `rdf:type` is missing or wrong — the report conforms with nothing in it. `summary.targetedShapes` counts the shapes that had something to check; `0` means nothing was. Read `outcome` first: `validated` or `invalid` means the metadata was checked, anything else that nothing was. With `profile=custom` shapes follow the entry's configured type (`configuredType`). Authentication is optional. Public entries can be validated without authentication. Authenticated requests may validate additional non-public entries.


/organization/{context_id}/{entry_id}/validate

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/organization/{context_id}/{entry_id}/validate?entrystore_host=dev.entryscape.com/store/&profile=dcat-ap-3.0"
var api = new Entryscape.OrganizationApi();
api.validateOrganization('1', '100', Entryscape.ValidationProfile['dcat-ap-3.0'], function(error, data) {
  if (!error) {
    console.log('Conforms:', data.conforms);
    console.log('Profile:', data.profile);
    console.log('Violations:', data.summary.violations);
    console.log('Warnings:', data.summary.warnings);
    data.results.forEach(function(r) {
      console.log(r.severity + ': ' + r.message);
    });
  }
});

const api = new OrganizationApi(config);
const response = await api.validateOrganization({
  contextId: '1',
  entryId: '100',
  profile: ValidationProfile.DcatAp30,
});
console.log('Conforms:', response.conforms);
console.log('Profile:', response.profile);
console.log('Violations:', response.summary.violations);
console.log('Warnings:', response.summary.warnings);
response.results.forEach((r) => {
  console.log(`${r.severity}: ${r.message}`);
});

api_instance = entryscape_client.OrganizationApi()
response = api_instance.validate_organization(
    context_id='1', entry_id='100',
    profile=ValidationProfile.DCAT_MINUS_AP_MINUS_3_DOT_0
)
print(f'Conforms: {response.conforms}')
print(f'Profile: {response.profile}')
print(f'Violations: {response.summary.violations}')
print(f'Warnings: {response.summary.warnings}')
for r in response.results:
    print(f'{r.severity}: {r.message}')

var apiInstance = new OrganizationApi();
var response = apiInstance.ValidateOrganization(
    contextId: "1", entryId: "100",
    profile: ValidationProfile.DcatAp30
);
Debug.WriteLine("Conforms: " + response.Conforms);
Debug.WriteLine("Profile: " + response.Profile);
Debug.WriteLine("Violations: " + response.Summary.Violations);
Debug.WriteLine("Warnings: " + response.Summary.Warnings);
foreach (var r in response.Results)
{
    Debug.WriteLine(r.Severity + ": " + r.Message);
}

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
profile*
ValidationProfile
DCAT-AP profile to validate against. Determines which SHACL shapes are used. Supported profiles: - `dcat-ap-2.1.1` - EU DCAT-AP 2.1.1 (stable, widely adopted) - `dcat-ap-3.0` - EU DCAT-AP 3.0 (current version)
Required

Responses


Showcase

createShowcase

Create showcase

Creates a new showcase in the specified context. The request body must contain valid metadata in JSON-LD format. Requires authentication with write access to the target context.


/showcase

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/showcase?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ShowcaseApi();
var metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Result',
  'dct:title': [{ '@value': 'Transport Dashboard', '@language': 'en' }],
  'dct:description': [{ '@value': 'A dashboard showing public transport statistics.', '@language': 'en' }]
};
api.createShowcase('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ShowcaseApi(config);
const metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Result',
  'dct:title': [{ '@value': 'Transport Dashboard', '@language': 'en' }],
  'dct:description': [{ '@value': 'A dashboard showing public transport statistics.', '@language': 'en' }],
};
const response = await api.createShowcase({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ShowcaseApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'esc': 'http://entryscape.com/terms/', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'esc:Result',
    'dct:title': [{'@value': 'Transport Dashboard', '@language': 'en'}],
    'dct:description': [{'@value': 'A dashboard showing public transport statistics.', '@language': 'en'}],
}
response = api_instance.create_showcase(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ShowcaseApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esc", "http://entryscape.com/terms/"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "esc:Result"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Transport Dashboard"}, {"@language", "en"}}
    }},
    {"dct:description", new List<object> {
        new Dictionary<string, string> {{"@value", "A dashboard showing public transport statistics."}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateShowcase(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteShowcase

Delete showcase

Deletes a specific showcase and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/showcase/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/showcase/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ShowcaseApi();
api.deleteShowcase('1', '100', function(error) {
  if (!error) {
    console.log('Showcase deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ShowcaseApi(config);
await api.deleteShowcase({
  contextId: '1',
  entryId: '100',
});
console.log('Showcase deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ShowcaseApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_showcase(context_id='1', entry_id='100')
print('Showcase deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ShowcaseApi(config);
apiInstance.DeleteShowcase(contextId: "1", entryId: "100");
Debug.WriteLine("Showcase deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getShowcase

Get showcase

Returns basic reference information for a specific showcase. Use the /metadata sub-endpoint to retrieve the full metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/showcase/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/showcase/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.ShowcaseApi();
api.getShowcase('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new ShowcaseApi(config);
const response = await api.getShowcase({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.ShowcaseApi()
response = api_instance.get_showcase(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new ShowcaseApi();
var response = apiInstance.GetShowcase(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getShowcaseMetadata

Get showcase metadata

Returns raw DCAT-AP metadata for a specific showcase. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/showcase/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/showcase/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.ShowcaseApi();
api.getShowcaseMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new ShowcaseApi(config);
const response = await api.getShowcaseMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.ShowcaseApi()
response = api_instance.get_showcase_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new ShowcaseApi();
var response = apiInstance.GetShowcaseMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listShowcases

List showcases

Returns a paginated list of all showcases. Showcases are featured examples demonstrating data usage. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/showcase

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/showcase?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.ShowcaseApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listShowcases(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new ShowcaseApi(config);
const response = await api.listShowcases({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.ShowcaseApi()
response = api_instance.list_showcases(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new ShowcaseApi();
var response = apiInstance.ListShowcases(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateShowcaseMetadata

Update showcase metadata

Replaces the metadata for a specific showcase. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/showcase/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/showcase/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.ShowcaseApi();
var metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Result',
  'dct:title': [{ '@value': 'Updated Showcase Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated showcase description.', '@language': 'en' }]
};
api.updateShowcaseMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new ShowcaseApi(config);
const metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Result',
  'dct:title': [{ '@value': 'Updated Showcase Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated showcase description.', '@language': 'en' }],
};
const response = await api.updateShowcaseMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.ShowcaseApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'esc': 'http://entryscape.com/terms/', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'esc:Result',
    'dct:title': [{'@value': 'Updated Showcase Title', '@language': 'en'}],
    'dct:description': [{'@value': 'Updated showcase description.', '@language': 'en'}],
}
response = api_instance.update_showcase_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new ShowcaseApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esc", "http://entryscape.com/terms/"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "esc:Result"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Showcase Title"}, {"@language", "en"}}
    }},
    {"dct:description", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated showcase description."}, {"@language", "en"}}
    }}
};
var response = apiInstance.UpdateShowcaseMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


Suggestion

createSuggestion

Create suggestion

Creates a new suggestion in the specified context. The request body must contain valid metadata in JSON-LD format. Requires authentication with write access to the target context.


/suggestion

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/suggestion?entrystore_host=dev.entryscape.com/store/&context=1" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.SuggestionApi();
var metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Suggestion',
  'dct:title': [{ '@value': 'Traffic Data Dataset', '@language': 'en' }],
  'dct:description': [{ '@value': 'A suggestion for a traffic data dataset.', '@language': 'en' }]
};
api.createSuggestion('1', metadata, function(error, data) {
  if (!error) {
    console.log('Created:', data.context_id + '/' + data.entry_id);
    console.log('URI:', data.uri);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new SuggestionApi(config);
const metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Suggestion',
  'dct:title': [{ '@value': 'Traffic Data Dataset', '@language': 'en' }],
  'dct:description': [{ '@value': 'A suggestion for a traffic data dataset.', '@language': 'en' }],
};
const response = await api.createSuggestion({
  context: '1',
  body: metadata,
});
console.log(`Created: ${response.contextId}/${response.entryId}`);
console.log('URI:', response.uri);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.SuggestionApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'esc': 'http://entryscape.com/terms/', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'esc:Suggestion',
    'dct:title': [{'@value': 'Traffic Data Dataset', '@language': 'en'}],
    'dct:description': [{'@value': 'A suggestion for a traffic data dataset.', '@language': 'en'}],
}
response = api_instance.create_suggestion(context='1', body=metadata)
print(f'Created: {response.context_id}/{response.entry_id}')
print(f'URI: {response.uri}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new SuggestionApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esc", "http://entryscape.com/terms/"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "esc:Suggestion"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Traffic Data Dataset"}, {"@language", "en"}}
    }},
    {"dct:description", new List<object> {
        new Dictionary<string, string> {{"@value", "A suggestion for a traffic data dataset."}, {"@language", "en"}}
    }}
};
var response = apiInstance.CreateSuggestion(context: "1", body: metadata);
Debug.WriteLine($"Created: {response.ContextId}/{response.EntryId}");
Debug.WriteLine("URI: " + response.Uri);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri This API's endpoint for the newly created entity — the collection it was created in, plus the segments addressing it there. A DCAT collection is not scoped by context, so both are appended (`POST /dataset?context=1` → `/dataset/1/42`); a model's child collection already carries the context (`POST /model/8/classes` → `/model/8/classes/3`); and a model is itself a context (`POST /model` → `/model/8`). This is an address on this API, not the entry's RDF identity — that is `uri` in the body.


deleteSuggestion

Delete suggestion

Deletes a specific suggestion and its associated metadata. This operation is irreversible. Requires authentication with write access to the entry's context.


/suggestion/{context_id}/{entry_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/suggestion/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.SuggestionApi();
api.deleteSuggestion('1', '100', function(error) {
  if (!error) {
    console.log('Suggestion deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new SuggestionApi(config);
await api.deleteSuggestion({
  contextId: '1',
  entryId: '100',
});
console.log('Suggestion deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.SuggestionApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_suggestion(context_id='1', entry_id='100')
print('Suggestion deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new SuggestionApi(config);
apiInstance.DeleteSuggestion(contextId: "1", entryId: "100");
Debug.WriteLine("Suggestion deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getSuggestion

Get suggestion

Returns basic reference information for a specific suggestion. Use the /metadata sub-endpoint to retrieve the full metadata. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/suggestion/{context_id}/{entry_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/suggestion/{context_id}/{entry_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.SuggestionApi();
api.getSuggestion('1', '100', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('Entry ID:', data.entry_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new SuggestionApi(config);
const response = await api.getSuggestion({
  contextId: '1',
  entryId: '100',
});
console.log('Context ID:', response.contextId);
console.log('Entry ID:', response.entryId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.SuggestionApi()
response = api_instance.get_suggestion(
    context_id='1', entry_id='100'
)
print(f'Context ID: {response.context_id}')
print(f'Entry ID: {response.entry_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new SuggestionApi();
var response = apiInstance.GetSuggestion(
    contextId: "1", entryId: "100"
);
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("Entry ID: " + response.EntryId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getSuggestionMetadata

Get suggestion metadata

Returns raw DCAT-AP metadata for a specific suggestion. The response format can be specified using the `format` query parameter. Authentication is optional. Public entries are accessible without authentication. Authenticated requests may access additional non-public entries.


/suggestion/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/rdf+json,text/turtle,application/n-triples,application/rdf+xml,application/json" \
 "https://api.entryscape.com/suggestion/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/&format=json-ld"
var api = new Entryscape.SuggestionApi();
api.getSuggestionMetadata('1', '100', function(error, data) {
  if (!error) {
    var entity = data['@graph'] ? data['@graph'][0] : data;
    var titleValue = entity['dcterms:title'] || entity['dct:title'];
    var title = Array.isArray(titleValue)
      ? (titleValue.find(function(v) { return v['@language'] === 'en'; }) || titleValue[0] || {})['@value']
      : (titleValue && typeof titleValue === 'object') ? titleValue['@value'] : titleValue;
    console.log('Title:', title);
    console.log('Full response:', data);
  }
});

const api = new SuggestionApi(config);
const response = await api.getSuggestionMetadata({
  contextId: '1',
  entryId: '100',
});
const metadata = response as Record<string, unknown>;
const entity = '@graph' in metadata && Array.isArray(metadata['@graph'])
  ? metadata['@graph'][0] as Record<string, unknown>
  : metadata;
const titleValue = entity['dcterms:title'] || entity['dct:title'];
const title = Array.isArray(titleValue)
  ? titleValue.find((v: any) => v['@language'] === 'en')?.['@value'] || titleValue[0]?.['@value']
  : typeof titleValue === 'object' ? (titleValue as any)['@value'] : titleValue;
console.log('Title:', title);
console.log('Full response:', response);

api_instance = entryscape_client.SuggestionApi()
response = api_instance.get_suggestion_metadata(
    context_id='1', entry_id='100'
)
metadata = response if isinstance(response, dict) else response.to_dict()
entity = metadata.get('@graph', [{}])[0] if '@graph' in metadata else metadata
title_value = entity.get('dcterms:title') or entity.get('dct:title')
if isinstance(title_value, list):
    title = next((v.get('@value') for v in title_value if v.get('@language') == 'en'),
                 title_value[0].get('@value') if title_value else None)
elif isinstance(title_value, dict):
    title = title_value.get('@value')
else:
    title = title_value
print(f'Title: {title}')

var apiInstance = new SuggestionApi();
var response = apiInstance.GetSuggestionMetadata(
    contextId: "1", entryId: "100"
);
var metadata = response as Dictionary<string, object>;
if (metadata != null && metadata.ContainsKey("@graph"))
{
    var graph = metadata["@graph"] as List<object>;
    var entity = graph?[0] as Dictionary<string, object>;
    object titleValue;
    entity?.TryGetValue("dcterms:title", out titleValue);
    Debug.WriteLine("Title: " + titleValue);
}
Debug.WriteLine(response);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
format
String
Response format for metadata. Defaults to JSON-LD (json-ld). Supported formats: - `json-ld` - JSON-LD format (default) - `rdf-json` - RDF/JSON format (simpler structure) - `turtle` - Turtle format - `n-triples` - N-Triples format - `rdf-xml` - RDF/XML format

Responses


listSuggestions

List suggestions

Returns a paginated list of all suggestions. Suggestions are dataset proposals in the catalog workflow. Authentication is optional. Without authentication, only publicly available entries are returned. Authenticated requests may return additional non-public entries. Answered from an asynchronously updated index: an entry created moments ago may be missing here while reading it by id already returns it. The alpha `configured_type` filter narrows existing route membership without changing legacy `entity_type`. Matching and authorization occur before pagination and counts; see the parameter for details.


/suggestion

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/suggestion?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&context=1&rdf_type=http://www.w3.org/ns/dcat#Dataset&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z&entry_type=Local&graph_type=List&resource_type=Information&configured_type=https://example.org/store/entitytypes/resource/example_geo"
var api = new Entryscape.SuggestionApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listSuggestions(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '/' + item.entry_id + '] ' + item.entity_type);
    });
  }
});

const api = new SuggestionApi(config);
const response = await api.listSuggestions({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}/${item.entryId}] ${item.entityType}`);
}

api_instance = entryscape_client.SuggestionApi()
response = api_instance.list_suggestions(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}/{item.entry_id}] {item.entity_type}')

var apiInstance = new SuggestionApi();
var response = apiInstance.ListSuggestions(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}/{item.EntryId}] {item.EntityType}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
context
String
Filter by context ID. Can be specified multiple times to include entries from multiple contexts.
rdf_type
URI (uri)
Only entries with this rdf:type URI
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant
entry_type
String
Filter by entry type. Determines how the entry is stored in EntryStore. - `Local`: Resource maintained in the repository (file, list, user, etc.) - `Link`: Resource not in repository, only metadata is local - `Reference`: Both resource and metadata are external (cached locally) - `LinkReference`: Local metadata with external metadata
graph_type
String
Filter by graph type. Determines the nature of the resource. - `None`: No special type (regular files, web resources) - `Context`: Container for other entries - `Systemcontext`: Special system context (_contexts, _principals) - `User`: User resource - `Group`: Group resource - `List`: Ordered list of entries - `Resultlist`: Result list from search - `Graph`: RDF graph resource - `String`: String resource - `Pipeline`: Executable pipeline - `PipelineResult`: Result from pipeline execution
resource_type
String
Filter by resource type. Indicates digital representation availability. - `Information`: Resource has a digital representation - `Resolvable`: Resource resolves to another address - `Named`: No digital representation (abstract entity) - `Unknown`: Representation status unknown (common for harvested data)
configured_type
String
Alpha Catalog filter, independent of rdf_type. Exact discovery id or case-sensitive name (id wins). Requires explicit context on search/root lists (400 if absent); nested lists use path context. Resolve for this host/context/ caller as in ConfiguredType: unknown/foreign 400, ambiguous name 409, inapplicable 403 (hidden 404); configuration failures use its discovery errors. Exact ConfiguredTypeIdentity match; no refines expansion. Exclude unresolved identities. AND with other filters and existing route membership. Authorization and matching precede paging, totals and facets. Unsupported rules fail with 503 CONFIGURATION_INVALID, never partial/RDF-only fallback. Omit for legacy behavior. Indexes lag: reread newly created entries by id, do not repeat create.

Responses


updateSuggestionMetadata

Update suggestion metadata

Replaces the metadata for a specific suggestion. The request body is forwarded directly to EntryStore without structural transformation; use the Content-Type header to select the RDF serialization (application/ld+json, text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json). This is a full replacement, not a partial update. Requires authentication with write access to the entry's context.


/suggestion/{context_id}/{entry_id}/metadata

Usage and SDK Samples

curl -X PUT \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/ld+json,application/json" \
 -H "Content-Type: application/ld+json" \
 "https://api.entryscape.com/suggestion/{context_id}/{entry_id}/metadata?entrystore_host=dev.entryscape.com/store/" \
 -d 'Custom MIME type example not yet supported: application/ld+json'
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.SuggestionApi();
var metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Suggestion',
  'dct:title': [{ '@value': 'Updated Suggestion Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated suggestion description.', '@language': 'en' }]
};
api.updateSuggestionMetadata('1', '100', metadata, function(error, data) {
  if (!error) {
    console.log('Metadata updated successfully');
    console.log('Response:', data);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new SuggestionApi(config);
const metadata = {
  '@context': { esc: 'http://entryscape.com/terms/', dct: 'http://purl.org/dc/terms/' },
  '@type': 'esc:Suggestion',
  'dct:title': [{ '@value': 'Updated Suggestion Title', '@language': 'en' }],
  'dct:description': [{ '@value': 'Updated suggestion description.', '@language': 'en' }],
};
const response = await api.updateSuggestionMetadata({
  contextId: '1',
  entryId: '100',
  body: metadata,
});
console.log('Metadata updated successfully');
console.log('Response:', response);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.SuggestionApi(
    entryscape_client.ApiClient(configuration)
)
metadata = {
    '@context': {'esc': 'http://entryscape.com/terms/', 'dct': 'http://purl.org/dc/terms/'},
    '@type': 'esc:Suggestion',
    'dct:title': [{'@value': 'Updated Suggestion Title', '@language': 'en'}],
    'dct:description': [{'@value': 'Updated suggestion description.', '@language': 'en'}],
}
response = api_instance.update_suggestion_metadata(
    context_id='1', entry_id='100', body=metadata
)
print('Metadata updated successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new SuggestionApi(config);
var metadata = new Dictionary<string, object>
{
    {"@context", new Dictionary<string, string> {{"esc", "http://entryscape.com/terms/"}, {"dct", "http://purl.org/dc/terms/"}}},
    {"@type", "esc:Suggestion"},
    {"dct:title", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated Suggestion Title"}, {"@language", "en"}}
    }},
    {"dct:description", new List<object> {
        new Dictionary<string, string> {{"@value", "Updated suggestion description."}, {"@language", "en"}}
    }}
};
var response = apiInstance.UpdateSuggestionMetadata(
    contextId: "1", entryId: "100", body: metadata
);
Debug.WriteLine("Metadata updated successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
entry_id*
String
The entry identifier within the context
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Body parameters
Name Description
requestBody *

Metadata that replaces the entry's current metadata. With Content-Type application/ld+json the structured MetadataRequest schema applies. Raw RDF is also accepted and forwarded verbatim to EntryStore when the Content-Type is text/turtle, application/rdf+xml, application/n-triples, or application/rdf+json (see the endpoint description).

Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


Terminology

deleteTerminology

Delete terminology

Deletes a terminology: the EntryStore context together with the concept scheme and every concept it contains, and the group that was provisioned with it when that group serves nothing else. This operation is irreversible. Refuses (404) a context that is not a terminology, so a model's context id cannot be deleted through this operation; use `DELETE /model/{context_id}` for a model. Requires authentication with permission to delete the terminology's context.


/terminology/{context_id}

Usage and SDK Samples

curl -X DELETE \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/terminology/{context_id}?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.TerminologyApi();
api.deleteTerminology('1327', function(error) {
  if (!error) {
    console.log('Terminology deleted successfully');
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new TerminologyApi(config);
await api.deleteTerminology({ contextId: '1327' });
console.log('Terminology deleted successfully');

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.TerminologyApi(
    entryscape_client.ApiClient(configuration)
)
api_instance.delete_terminology(context_id='1327')
print('Terminology deleted successfully')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new TerminologyApi(config);
apiInstance.DeleteTerminology(contextId: "1327");
Debug.WriteLine("Terminology deleted successfully");

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


getTerminology

Get terminology

Returns basic reference information for a terminology, addressed by the `context_id` that `POST /terminology/import` provisioned for it (the job's `resultUrl` names it). The reference's `context_id` and `entry_id` are both that id, and its `uri` is the context resource. Answers 404 for a context that exists but is not a terminology, so a model's context id cannot be read through this operation. Authentication is optional. Public terminologies are accessible without authentication. Authenticated requests may access additional non-public terminologies.


/terminology/{context_id}

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/terminology/{context_id}?entrystore_host=dev.entryscape.com/store/"
var api = new Entryscape.TerminologyApi();
api.getTerminology('1327', function(error, data) {
  if (!error) {
    console.log('Context ID:', data.context_id);
    console.log('URI:', data.uri);
    console.log('Entity Type:', data.entity_type);
    console.log('Created:', data.created);
  }
});

const api = new TerminologyApi(config);
const response = await api.getTerminology({ contextId: '1327' });
console.log('Context ID:', response.contextId);
console.log('URI:', response.uri);
console.log('Entity Type:', response.entityType);
console.log('Created:', response.created);

api_instance = entryscape_client.TerminologyApi()
response = api_instance.get_terminology(context_id='1327')
print(f'Context ID: {response.context_id}')
print(f'URI: {response.uri}')
print(f'Entity Type: {response.entity_type}')
print(f'Created: {response.created}')

var apiInstance = new TerminologyApi();
var response = apiInstance.GetTerminology(contextId: "1327");
Debug.WriteLine("Context ID: " + response.ContextId);
Debug.WriteLine("URI: " + response.Uri);
Debug.WriteLine("Entity Type: " + response.EntityType);
Debug.WriteLine("Created: " + response.Created);

Scopes

Parameters

Path parameters
Name Description
context_id*
String
The context (catalog) identifier in EntryStore
Required
Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


importTerminology

Import SKOS terminology

Import a SKOS terminology from an RDF file or URL. The server validates the RDF structure (exactly one `skos:ConceptScheme`, at least one `skos:Concept`), then queues the import for asynchronous processing. Use `GET /job/{job_id}` to poll for import status and progress. Supported RDF formats: RDF/XML (`application/rdf+xml`), Turtle (`text/turtle`), N-Triples (`application/n-triples`), TriG (`application/trig`). Authentication is required.


/terminology/import

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: multipart/form-data" \
 "https://api.entryscape.com/terminology/import?entrystore_host=dev.entryscape.com/store/"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.TerminologyApi();
var file = fs.createReadStream('/path/to/vocabulary.rdf');
api.importTerminology(file, {mode: 'local'}, function(error, data) {
  if (!error) {
    console.log('Import queued');
    console.log('Job ID:', data.jobId);
    console.log('Status:', data.status);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new TerminologyApi(config);
const file = fs.createReadStream('/path/to/vocabulary.rdf');
const response = await api.importTerminology({
  file: file,
  mode: 'local',
});
console.log('Import queued');
console.log('Job ID:', response.jobId);
console.log('Status:', response.status);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.TerminologyApi(
    entryscape_client.ApiClient(configuration)
)
with open('/path/to/vocabulary.rdf', 'rb') as f:
    response = api_instance.import_terminology(
        file=f,
        mode='local'
    )
print('Import queued')
print(f'Job ID: {response.job_id}')
print(f'Status: {response.status}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new TerminologyApi(config);
using var fileStream = File.OpenRead("/path/to/vocabulary.rdf");
var response = apiInstance.ImportTerminology(
    file: fileStream,
    mode: TerminologyImportMode.Local
);
Debug.WriteLine("Import queued");
Debug.WriteLine("Job ID: " + response.JobId);
Debug.WriteLine("Status: " + response.Status);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Form parameters
Name Description
file
File (binary)
RDF file containing the SKOS terminology to import. Required if `sourceUrl` is not provided.
sourceUrl
URI (uri)
URL to fetch the RDF terminology from. Required if `file` is not provided.
mode
TerminologyImportMode
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.

Responses


listTerminologies

List terminologies

Returns a paginated list of the SKOS terminologies on the EntryStore instance. A terminology is an EntryStore context (`es:TerminologyContext`) holding one `skos:ConceptScheme` and its concepts, provisioned by `POST /terminology/import`, so a terminology is addressed by its `context_id` alone. Each item's `context_id` and `entry_id` both carry that id. Authentication is optional. Without authentication, only publicly readable terminologies are returned. Authenticated requests may return additional non-public terminologies. Answered from an asynchronously updated index: a terminology imported moments ago may be missing here while reading it by id already returns it.


/terminology

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://api.entryscape.com/terminology?entrystore_host=dev.entryscape.com/store/&limit=56&offset=56&cursor=AoE/EGVudHJ5OjEvMTAw&query=open data&sort=title+asc,modified+desc&public=true&created_after=2024-01-01T00:00:00Z&created_before=2024-12-31T23:59:59Z&modified_after=2024-01-01T00:00:00Z&modified_before=2024-12-31T23:59:59Z"
var api = new Entryscape.TerminologyApi();
var opts = {
  'entrystoreHost': "dev.entryscape.com/store/"
};
api.listTerminologies(opts, function(error, data) {
  if (!error) {
    console.log('Total results:', data.results);
    data.items.forEach(function(item) {
      console.log('- [' + item.context_id + '] ' + item.title);
    });
  }
});

const api = new TerminologyApi(config);
const response = await api.listTerminologies({
  entrystoreHost: "dev.entryscape.com/store/",
});
console.log('Total results:', response.results);
for (const item of response.items) {
  console.log(`- [${item.contextId}] ${item.title}`);
}

api_instance = entryscape_client.TerminologyApi()
response = api_instance.list_terminologies(
    entrystore_host="dev.entryscape.com/store/"
)
print(f'Total results: {response.results}')
for item in response.items:
    print(f'- [{item.context_id}] {item.title}')

var apiInstance = new TerminologyApi();
var response = apiInstance.ListTerminologies(
    entrystoreHost: "dev.entryscape.com/store/"
);
Debug.WriteLine("Total results: " + response.Results);
foreach (var item in response.Items)
{
    Debug.WriteLine($"- [{item.ContextId}] {item.Title}");
}

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
limit
Integer (int32)
Results per page
offset
Integer (int32)
Results to skip before the first one returned
cursor
String
Opaque cursor token for cursor-based pagination. When provided, `offset` is ignored and results start after the position encoded in the cursor. Obtain the cursor value from the `next_cursor` field in a previous response.
query
String
Free-text search. The value is split on whitespace and every term must match, either as a whole word anywhere in the entry's indexed text — title, description and tags — or as a substring of its title. The value is matched literally: characters that Solr treats as syntax are escaped rather than interpreted, so a query cannot select fields or combine clauses of its own.
sort
String
Sort clauses, comma-separated, highest priority first. A clause is `field+direction`, or `field` alone taking its direction from `sort_order`. The `+` may be sent literally or as `%2B`. Fields: `created`, `modified`, `score`, `title` (the English title; name another as `title.sv`). Anything else is rejected with 400.
public
Boolean
true: only publicly readable entries; false: only non-public entries
created_after
Date (date-time)
Created at or after this instant
created_before
Date (date-time)
Created before this instant
modified_after
Date (date-time)
Modified at or after this instant
modified_before
Date (date-time)
Modified before this instant

Responses


Upload

addFileToDistribution

Add file to distribution

Adds a file to a distribution. Pass the resource URI of the **distribution**: the job creates a new file entry in the distribution's context, stores the upload as its resource, links it from the distribution with `dcat:accessURL` and `dcat:downloadURL`, and replaces the distribution's `dcterms:modified`. The new file entry's resource URI is reported as `resultUrl` on the job, and is what a later `replaceFile` takes. If the distribution has a connected auto-generated API (an API distribution whose `dcterms:source` is this distribution), the file's rows are appended to the API's dataset and the API distribution is marked modified. Such a distribution only accepts CSV; any other upload fails the job before anything is written. Once the file is linked, the job succeeds; an API it could not update after that is reported in the job's `warnings`. The upload is processed asynchronously: the response carries a job ID for `GET /job/{job_id}`. A URI that is not a distribution is rejected with 422 before anything is queued, one that does not resolve to a readable entry with 404. Requires authentication with write access to the distribution's context.


/distribution/addFile

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: multipart/form-data" \
 "https://api.entryscape.com/distribution/addFile?entrystore_host=dev.entryscape.com/store/&resourceURI=https://admin.dataportal.se/store/1/resource/45"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.UploadApi();
var file = fs.createReadStream('/path/to/file.csv');
api.addFileToDistribution('http://example.org/resource/123', file, function(error, data) {
  if (!error) {
    console.log('File upload queued');
    console.log('Job ID:', data.jobId);
    console.log('Status:', data.status);
    console.log('Message:', data.message);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new UploadApi(config);
const file = fs.createReadStream('/path/to/file.csv');
const response = await api.addFileToDistribution({
  resourceUri: 'http://example.org/resource/123',
  file: file,
});
console.log('File upload queued');
console.log('Job ID:', response.jobId);
console.log('Status:', response.status);
console.log('Message:', response.message);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.UploadApi(
    entryscape_client.ApiClient(configuration)
)
with open('/path/to/file.csv', 'rb') as f:
    response = api_instance.add_file_to_distribution(
        resource_uri='http://example.org/resource/123',
        file=f
    )
print('File upload queued')
print(f'Job ID: {response.job_id}')
print(f'Status: {response.status}')
print(f'Message: {response.message}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new UploadApi(config);
using var fileStream = File.OpenRead("/path/to/file.csv");
var response = apiInstance.AddFileToDistribution(
    resourceUri: "http://example.org/resource/123",
    file: fileStream
);
Debug.WriteLine("File upload queued");
Debug.WriteLine("Job ID: " + response.JobId);
Debug.WriteLine("Status: " + response.Status);
Debug.WriteLine("Message: " + response.Message);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Form parameters
Name Description
file*
File (binary)
The file to upload
Required
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
resourceURI*
URI (uri)
The resource URI of the **distribution** to add the file to, of the form `{store}/{context}/resource/{entry}`. In EntryScape Catalog it is shown as "Resource" under the distribution's information icon. A URI that identifies something other than a `dcat:Distribution` (for example a file entry) is rejected with 422; one that does not resolve to a readable entry with 404.
Required

Responses


replaceFileInDistribution

Replace file in distribution

Replaces the content of a file in a distribution. Pass the resource URI of the **file entry** (the distribution's download URL): the job overwrites its resource with the upload, sets its title and format from the upload, and replaces `dcterms:modified` on every distribution in the context that links to the file. The file entry's resource URI is reported as `resultUrl` on the job. If a linking distribution has a connected auto-generated API (an API distribution whose `dcterms:source` is that distribution), the API's dataset is rebuilt from the distribution's files and the API distribution is marked modified. Such a distribution only accepts CSV; any other upload fails the job before anything is written. Once the content is replaced, the job succeeds; a distribution or API it could not update after that is reported in the job's `warnings`. The upload is processed asynchronously: the response carries a job ID for `GET /job/{job_id}`. A URI that is not a file entry is rejected with 422 before anything is queued, one that does not resolve to a readable entry with 404. Requires authentication with write access to the file's context.


/distribution/replaceFile

Usage and SDK Samples

curl -X POST \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 -H "Content-Type: multipart/form-data" \
 "https://api.entryscape.com/distribution/replaceFile?entrystore_host=dev.entryscape.com/store/&resourceURI=https://admin.dataportal.se/store/1/resource/46"
var client = Entryscape.ApiClient.instance;
client.authentications['auth_header'].apiKey = 'YOUR_TOKEN';
var api = new Entryscape.UploadApi();
var file = fs.createReadStream('/path/to/file.csv');
api.replaceFileInDistribution('http://example.org/resource/123', file, function(error, data) {
  if (!error) {
    console.log('File upload queued');
    console.log('Job ID:', data.jobId);
    console.log('Status:', data.status);
    console.log('Message:', data.message);
  }
});

const config = new Configuration({
  apiKey: { 'X-Auth-Token': 'YOUR_TOKEN' },
});
const api = new UploadApi(config);
const file = fs.createReadStream('/path/to/file.csv');
const response = await api.replaceFileInDistribution({
  resourceUri: 'http://example.org/resource/123',
  file: file,
});
console.log('File upload queued');
console.log('Job ID:', response.jobId);
console.log('Status:', response.status);
console.log('Message:', response.message);

configuration = entryscape_client.Configuration()
configuration.api_key['X-Auth-Token'] = 'YOUR_TOKEN'
api_instance = entryscape_client.UploadApi(
    entryscape_client.ApiClient(configuration)
)
with open('/path/to/file.csv', 'rb') as f:
    response = api_instance.replace_file_in_distribution(
        resource_uri='http://example.org/resource/123',
        file=f
    )
print('File upload queued')
print(f'Job ID: {response.job_id}')
print(f'Status: {response.status}')
print(f'Message: {response.message}')

var config = new Configuration();
config.ApiKey.Add("X-Auth-Token", "YOUR_TOKEN");
var apiInstance = new UploadApi(config);
using var fileStream = File.OpenRead("/path/to/file.csv");
var response = apiInstance.ReplaceFileInDistribution(
    resourceUri: "http://example.org/resource/123",
    file: fileStream
);
Debug.WriteLine("File upload queued");
Debug.WriteLine("Job ID: " + response.JobId);
Debug.WriteLine("Status: " + response.Status);
Debug.WriteLine("Message: " + response.Message);

Scopes

Parameters

Header parameters
Name Description
X-Entrystore-Host
String
Target EntryStore instance (alternative to the entrystore_host query parameter, which wins if both are sent). The value has to be an instance this deployment has been configured to allow; any other host is refused with 400. Omit it for the deployment's default instance.
Form parameters
Name Description
file*
File (binary)
The file to upload
Required
Query parameters
Name Description
entrystore_host
String
Target EntryStore instance. Overrides the X-Entrystore-Host header if both are provided. The value has to be an instance this deployment has been configured to allow; any other host is refused with 400, so a target you cannot reach is a request to the deployment's operator, not a different value to try. Omit it for the deployment's default instance.
resourceURI*
URI (uri)
The resource URI of the **file entry** to replace, of the form `{store}/{context}/resource/{entry}`. This is the distribution's download URL (`dcat:downloadURL`), shown as "web address for access" under the distribution's information icon in EntryScape Catalog, and the `resultUrl` an earlier add job reported. A URI that identifies something other than a file entry (for example the distribution itself) is rejected with 422; one that does not resolve to a readable entry with 404.
Required

Responses