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://meta24.metasolutions.se/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://meta24.metasolutions.se/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://meta24.metasolutions.se/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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
loginRequest *

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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 data services belonging to this catalog. Data services are identified by sharing the same context_id as the catalog. 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.


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

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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


listCatalogDatasets

List datasets in catalog

Returns a paginated list of datasets belonging to this catalog. Datasets are identified by sharing the same context_id as the catalog. 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.


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

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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


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.


/catalog

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.CatalogApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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.


/contact

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.ContactApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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.


/dataservice

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.DataserviceApi();
api.listDataServices('1', '100', 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({
  contextId: '1',
  entryId: '100',
});
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(
    context_id='1', entry_id='100'
)
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(
    contextId: "1", entryId: "100"
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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', '42', 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: '42',
});
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='42')
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: "42");
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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 distributions belonging to this dataset. Distributions are identified by sharing the same context_id as the dataset. 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.


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

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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


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.


/dataset

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.DatasetApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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', '42', 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: '42',
  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='42', 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: "42", 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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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.


/distribution

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.DistributionApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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', '600', 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: '600',
});
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='600')
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: "600");
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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.


/document

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.DocumentApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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', '600', 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: '600',
  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='600', 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: "600", 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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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', '700', 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: '700',
});
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='700')
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: "700");
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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.


/idea

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.IdeaApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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', '700', 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: '700',
  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='700', 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: "700", 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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


Model

createModel

Create model

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody

Optional initial descriptive metadata for the model context. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


deleteModel

Delete model

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModel

Get model

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelMetadata

Get model metadata

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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://meta24.metasolutions.se/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': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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 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 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

Metadata that replaces the model context's current metadata. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


ModelClass

createModelClass

Create model class

**Alpha:** part of the Models API. 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`). The request body contains the class's RDF metadata (for example an `rdfs:label`). Raw RDF is also accepted and forwarded verbatim to EntryStore (see the metadata endpoint for supported serializations). 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://meta24.metasolutions.se/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#' },
  '@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#' },
  '@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#'},
    '@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#"}}},
    {"@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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

RDF metadata for the new class. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


deleteModelClass

Delete model class

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelClass

Get model class

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelClassMetadata

Get model class metadata

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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 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 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

Metadata that replaces the class's current metadata. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


ModelDiagram

createModelDiagram

Create model diagram

**Alpha:** part of the Models API. 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 request body contains the diagram's RDF metadata. Raw RDF is also accepted and forwarded verbatim to EntryStore (see the metadata endpoint for supported serializations). 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

RDF metadata for the new diagram. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


deleteModelDiagram

Delete model diagram

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelDiagram

Get model diagram

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelDiagramMetadata

Get model diagram metadata

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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 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 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

Metadata that replaces the diagram's current metadata. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


ModelField

createModelField

Create model field

**Alpha:** part of the Models API. 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 contains the field's RDF metadata. Raw RDF is also accepted and forwarded verbatim to EntryStore (see the metadata endpoint for supported serializations). 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

RDF metadata for the new field. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


deleteModelField

Delete model field

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelField

Get model field

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelFieldMetadata

Get model field metadata

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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 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 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

Metadata that replaces the field's current metadata. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


ModelForm

createModelForm

Create model form

**Alpha:** part of the Models API. 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 contains the form's RDF metadata. Raw RDF is also accepted and forwarded verbatim to EntryStore (see the metadata endpoint for supported serializations). 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

RDF metadata for the new form. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


deleteModelForm

Delete model form

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelForm

Get model form

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelFormMetadata

Get model form metadata

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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 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 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

Metadata that replaces the form's current metadata. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


ModelNamespace

createModelNamespace

Create model namespace

**Alpha:** part of the Models API. 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 contains the namespace's RDF metadata. Raw RDF is also accepted and forwarded verbatim to EntryStore (see the metadata endpoint for supported serializations). 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

RDF metadata for the new namespace. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


deleteModelNamespace

Delete model namespace

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelNamespace

Get model namespace

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelNamespaceMetadata

Get model namespace metadata

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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 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 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

Metadata that replaces the namespace's current metadata. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


ModelProperty

createModelProperty

Create model property

**Alpha:** part of the Models API. 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`). The request body contains the property's RDF metadata (for example an `rdfs:label`). Raw RDF is also accepted and forwarded verbatim to EntryStore (see the metadata endpoint for supported serializations). 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://meta24.metasolutions.se/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#'
  },
  '@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#',
  },
  '@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#',
    },
    '@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#"}
    }},
    {"@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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

RDF metadata for the new property. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


deleteModelProperty

Delete model property

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelProperty

Get model property

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

Responses


getModelPropertyMetadata

Get model property metadata

**Alpha:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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:** part of the Models API. 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 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 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Body parameters
Name Description
requestBody *

Metadata that replaces the property's current metadata. With Content-Type application/ld+json the 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.

Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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.


/organization

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.OrganizationApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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', '800', 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: '800',
});
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='800')
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: "800");
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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.


/showcase

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.ShowcaseApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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', '800', 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: '800',
  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='800', 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: "800", 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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
context*
String
The context (catalog) ID where the new entity will be created
Required

Responses

Name Type Format Description
Location URI uri URI of the newly created entity


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://meta24.metasolutions.se/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', '900', 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: '900',
});
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='900')
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: "900");
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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.


/suggestion

Usage and SDK Samples

curl -X GET \
 \
-H "X-Auth-Token: [[apiKey]]" \
 -H "Accept: application/json" \
 "https://meta24.metasolutions.se/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"
var api = new Entryscape.SuggestionApi();
var opts = {
  'entrystoreHost': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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)

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://meta24.metasolutions.se/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', '900', 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: '900',
  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='900', 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: "900", 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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
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
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.

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://meta24.metasolutions.se/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': Entryscape.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: EntrystoreHost.DevEntryscapeComStore,
});
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=EntrystoreHost.DevEntryscapeComStore
)
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: EntrystoreHost.DevEntryscapeComStore
);
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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Form parameters
Name Description
file*
File (binary)
The file to upload
Required
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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. 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://meta24.metasolutions.se/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
EntrystoreHost
Target EntryStore instance (alternative to query parameter)
Form parameters
Name Description
file*
File (binary)
The file to upload
Required
Query parameters
Name Description
entrystore_host
EntrystoreHost
Target EntryStore instance. Overrides X-Entrystore-Host header if both are provided.
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