dalim-fusion-es-api/docs/dalim-api-reference.md
DJP 584b7df68b feat: Dalim DAM web application — full build
Complete client-facing DAM interface for Dalim ES FUSiON GraphQL API:

- Asset browsing, search with faceted filtering, project/folder navigation
- Send To distribution to 17 MMS platforms (PIM, Social, Google, In-Store, Print)
- 10 workflow templates, approval queue, process monitor with progress bars
- Collections with thumbnail mosaics, dashboard with KPI cards and activity feed
- Docker Compose (app + PostgreSQL), mock mode, error boundaries
- Two-tier API reference docs (466 operations indexed, 29 detailed)
- MediaMarkt branding: Noto Sans Display, #DF0000 red, dark sidebar

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 22:12:18 -04:00

955 lines
34 KiB
Markdown

# Dalim ES FUSiON API — Active Endpoint Reference
Detailed documentation for the endpoints actively used in this project.
For a full list of all 466 available operations, see `dalim-api-index.md`.
---
## Authentication
The API uses OAuth2 with HMAC SHA256 signing.
**Token endpoint:** `https://{HOST}/ES/api/oauth/token`
**GraphQL endpoint:** `https://{HOST}/ES/api/graphql`
**Get a token:**
```python
token_data = {
"grant_type": "password",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"username": USERNAME,
"password": PASSWORD
}
response = requests.post(TOKEN_URL, data=token_data)
access_token = response.json()["access_token"]
headers = {"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"}
```
**Dependency chain** (must create in this order):
Security Profiles → Users → Projects → Assets
---
## System & Auth
### connectAs
**Type:** Mutation
**Returns:** `a JSON!`
Enable an Admin to connect to ES as another User. The response is identical to a standard login, a new AccessToken is received.
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `login` | `String!` | Yes | login of the user |
| `withSecurityProfile` | `String` | No | name of a securityProfile |
| `createIfNotExists` | `Boolean` | No | Auto-created user if not exists |
**Example Query:**
```graphql
mutation connectAs( $login: String!, $withSecurityProfile: String, $createIfNotExists: Boolean ) { connectAs( login: $login, withSecurityProfile: $withSecurityProfile, createIfNotExists: $createIfNotExists ) }
```
**Example Variables:**
```json
{ "login": "abc123", "withSecurityProfile": "abc123", "createIfNotExists": true }
```
**Example Response:**
```json
{"data": {"connectAs": {}}}
```
---
### disconnectAs
**Type:** Mutation
**Returns:** `a JSON!`
When connected as another user, returns to the original login, the current token is revoked. The response is identical to a standard login, a new AccessToken is received. If the AccessToken does not correspond to a user connected as, then nothing append, the current token is still valid.
**Example Query:**
```graphql
mutation disconnectAs { disconnectAs }
```
**Example Response:**
```json
{"data": {"disconnectAs": {}}}
```
---
### whoami
**Type:** Query
**Returns:** `a Whoami!`
**Example Query:**
```graphql
query whoami { whoami { id user { ...UserFragment } securityProfile { ...UserSecurityProfileFragment } } }
```
**Example Response:**
```json
{ "data": { "whoami": { "id": "4", "user": User, "securityProfile": UserSecurityProfile } } }
```
---
### serverInformation
**Type:** Query
**Returns:** `a ServerInformation!`
**Example Query:**
```graphql
query serverInformation { serverInformation { guiClientId authorizationURL accessTokenURL authenticationKeys } }
```
**Example Response:**
```json
{ "data": { "serverInformation": { "guiClientId": "abc123", "authorizationURL": "http://www.test.com/", "accessTokenURL": "http://www.test.com/", "authenticationKeys": ["4"] } } }
```
---
## Users
### users
**Type:** Query
**Returns:** `a UserPagingResponse!`
Retrieve visible users by the current logged user
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `filter` | `iFilter` | No | — |
| `limit` | `Int` | No | — |
| `cursor` | `ID` | No | — |
| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} |
**Example Query:**
```graphql
query users( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { users( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...UserFragment } } }
```
**Example Variables:**
```json
{ "filter": iFilter, "limit": 123, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} }
```
**Example Response:**
```json
{ "data": { "users": { "lowerCursor": "4", "upperCursor": "4", "hasMoreItems": true, "objectList": [User] } } }
```
---
### userById
**Type:** Query
**Returns:** `[User!]`
Retrieve user by id
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | — |
**Example Query:**
```graphql
query userById($id: [ID!]!) { userById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }
```
**Example Variables:**
```json
{"id": ["4"]}
```
**Example Response:**
```json
{ "data": { "userById": [ { "id": "4", "name": "abc123", "description": "xyz789", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "login": "abc123", "userCanLog": true, "lang": "ar", "dateFormat": "abc123", "unitResolution": "xyz789", "unitLength": "xyz789", "color": "xyz789", "image": "xyz789", "use2FA": true, "channel2FA": "AUTHENTICATOR", "sessionTimeout": 123, "workCapacity": "abc123", "workCapacityUnit": "xyz789", "firstName": "xyz789", "lastName": "abc123", "email": "abc123", "title": "abc123", "company": "xyz789", "phone": "abc123", "phone2": "xyz789", "homePhone": "xyz789", "fax": "abc123", "mobilePhone": "xyz789", "departm
... (truncated)
```
---
### createUser
**Type:** Mutation
**Returns:** `a User!`
Create an User in the specified Organization
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `name` | `String!` | Yes | — |
| `in` | `ID!` | Yes | — |
| `setup` | `iCreateUserSetup` | No | — |
**Example Query:**
```graphql
mutation createUser( $name: String!, $in: ID!, $setup: iCreateUserSetup ) { createUser( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }
```
**Example Variables:**
```json
{ "name": "abc123", "in": 4, "setup": iCreateUserSetup }
```
**Example Response:**
```json
{ "data": { "createUser": { "id": 4, "name": "abc123", "description": "xyz789", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "login": "xyz789", "userCanLog": false, "lang": "ar", "dateFormat": "abc123", "unitResolution": "xyz789", "unitLength": "xyz789", "color": "xyz789", "image": "abc123", "use2FA": true, "channel2FA": "AUTHENTICATOR", "sessionTimeout": 123, "workCapacity": "xyz789", "workCapacityUnit": "xyz789", "firstName": "xyz789", "lastName": "xyz789", "email": "abc123", "title": "xyz789", "company": "xyz789", "phone": "xyz789", "phone2": "xyz789", "homePhone": "abc123", "fax": "xyz789", "mobilePhone": "abc123", "departme
... (truncated)
```
---
### changeUser
**Type:** Mutation
**Returns:** `a User!`
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `name` | `String!` | Yes | — |
**Example Query:**
```graphql
mutation changeUser($name: String!) { changeUser(name: $name) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }
```
**Example Variables:**
```json
{"name": "abc123"}
```
**Example Response:**
```json
{ "data": { "changeUser": { "id": "4", "name": "abc123", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "login": "xyz789", "userCanLog": true, "lang": "ar", "dateFormat": "xyz789", "unitResolution": "abc123", "unitLength": "abc123", "color": "xyz789", "image": "abc123", "use2FA": true, "channel2FA": "AUTHENTICATOR", "sessionTimeout": 123, "workCapacity": "xyz789", "workCapacityUnit": "xyz789", "firstName": "abc123", "lastName": "xyz789", "email": "xyz789", "title": "abc123", "company": "abc123", "phone": "xyz789", "phone2": "abc123", "homePhone": "abc123", "fax": "abc123", "mobilePhone": "abc123", "departm
... (truncated)
```
---
## Security Profiles
### securityProfiles
**Type:** Query
**Returns:** `a SecurityProfilePagingResponse!`
Retrieve SecurityProfile by filter
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `filter` | `iFilter` | No | — |
| `limit` | `Int` | No | — |
| `cursor` | `ID` | No | — |
| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} |
**Example Query:**
```graphql
query securityProfiles( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { securityProfiles( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...SecurityProfileFragment } } }
```
**Example Variables:**
```json
{ "filter": iFilter, "limit": 123, "cursor": "4", "orderBy": {"property": "id", "direction": "ASC"} }
```
**Example Response:**
```json
{ "data": { "securityProfiles": { "lowerCursor": 4, "upperCursor": "4", "hasMoreItems": true, "objectList": [SecurityProfile] } } }
```
---
### createUserSecurityProfile
**Type:** Mutation
**Returns:** `a UserSecurityProfile`
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `name` | `String!` | Yes | — |
| `setup` | `iUserSecurityProfile` | No | — |
**Example Query:**
```graphql
mutation createUserSecurityProfile( $name: String!, $setup: iUserSecurityProfile ) { createUserSecurityProfile( name: $name, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } securityRoles } }
```
**Example Variables:**
```json
{ "name": "abc123", "setup": iUserSecurityProfile }
```
**Example Response:**
```json
{ "data": { "createUserSecurityProfile": { "id": "4", "name": "xyz789", "description": "xyz789", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "properties": [SecurityProperty], "securityRoles": ["ADMIN"] } } }
```
---
### addProfileToUser
**Type:** Mutation
**Returns:** `a Boolean!`
Add one or many SecurityProfiles to one or many Users
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | — |
| `to` | `[ID!]!` | Yes | — |
**Example Query:**
```graphql
mutation addProfileToUser( $id: [ID!]!, $to: [ID!]! ) { addProfileToUser( id: $id, to: $to ) }
```
**Example Variables:**
```json
{"id": ["4"], "to": [4]}
```
**Example Response:**
```json
{"data": {"addProfileToUser": true}}
```
---
### addRoleToUser
**Type:** Mutation
**Returns:** `a Boolean!`
Add one or many Role(s) to one or many User(s)
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | — |
| `to` | `[ID!]!` | Yes | — |
**Example Query:**
```graphql
mutation addRoleToUser( $id: [ID!]!, $to: [ID!]! ) { addRoleToUser( id: $id, to: $to ) }
```
**Example Variables:**
```json
{"id": ["4"], "to": [4]}
```
**Example Response:**
```json
{"data": {"addRoleToUser": true}}
```
---
## Projects
### projects
**Type:** Query
**Returns:** `a ProjectPagingResponse!`
Retrieve Projects by filter
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `filter` | `iFilter` | No | — |
| `limit` | `Int` | No | — |
| `cursor` | `ID` | No | — |
| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} |
**Example Query:**
```graphql
query projects( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { projects( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProjectFragment } } }
```
**Example Variables:**
```json
{ "filter": iFilter, "limit": 123, "cursor": "4", "orderBy": {"property": "id", "direction": "ASC"} }
```
**Example Response:**
```json
{ "data": { "projects": { "lowerCursor": 4, "upperCursor": 4, "hasMoreItems": true, "objectList": [Project] } } }
```
---
### projectById
**Type:** Query
**Returns:** `[Project!]`
Retrieve Projects by ID or [ID]
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | — |
**Example Query:**
```graphql
query projectById($id: [ID!]!) { projectById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }
```
**Example Variables:**
```json
{"id": [4]}
```
**Example Response:**
```json
{ "data": { "projectById": [ { "id": 4, "name": "abc123", "description": "xyz789", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "trashDate": "2007-12-03T10:15:30Z", "trashUser": User, "endDate": "2007-12-03T10:15:30Z", "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "status": ["ACTIVE"], "workflowName": "abc123", "approvalStatus": [ApprovalActivityStatus], "approvalSummary": "NONE", "approvals": [ApprovalCycle], "assetApprovals": [ApprovalCycle], "children": PagingResponse, "assetWorkflow": Workflow, "processes": [Process], "projectTemplate": ProjectTemplate, "priority": 123, "colorSpace": ColorSpace, "viewingCondition": ViewingCondition, "reversedView": true, "customer": Cus
... (truncated)
```
---
### projectTemplates
**Type:** Query
**Returns:** `a ProjectTemplateResponse!`
Retrieve Project Templates
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `filter` | `iFilter` | No | — |
| `limit` | `Int` | No | — |
| `cursor` | `ID` | No | — |
| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} |
**Example Query:**
```graphql
query projectTemplates( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { projectTemplates( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProjectTemplateFragment } } }
```
**Example Variables:**
```json
{ "filter": iFilter, "limit": 123, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} }
```
**Example Response:**
```json
{ "data": { "projectTemplates": { "lowerCursor": 4, "upperCursor": 4, "hasMoreItems": true, "objectList": [ProjectTemplate] } } }
```
---
### createProject
**Type:** Mutation
**Returns:** `a Project!`
security role handle by the mutationFetcher itself To create a Project for a Customer with a name
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | `ID!` | Yes | — |
| `name` | `String!` | Yes | — |
| `setup` | `iProjectSetup` | No | — |
| `inputs` | `[iInputFile!]` | Yes | — |
**Example Query:**
```graphql
mutation createProject( $customerId: ID!, $name: String!, $setup: iProjectSetup, $inputs: [iInputFile!] ) { createProject( customerId: $customerId, name: $name, setup: $setup, inputs: $inputs ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }
```
**Example Variables:**
```json
{ "customerId": "4", "name": "xyz789", "setup": iProjectSetup, "inputs": [iInputFile] }
```
**Example Response:**
```json
{ "data": { "createProject": { "id": "4", "name": "abc123", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "trashDate": "2007-12-03T10:15:30Z", "trashUser": User, "endDate": "2007-12-03T10:15:30Z", "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "status": ["ACTIVE"], "workflowName": "xyz789", "approvalStatus": [ApprovalActivityStatus], "approvalSummary": "NONE", "approvals": [ApprovalCycle], "assetApprovals": [ApprovalCycle], "children": PagingResponse, "assetWorkflow": Workflow, "processes": [Process], "projectTemplate": ProjectTemplate, "priority": 987, "colorSpace": ColorSpace, "viewingCondition": ViewingCondition, "reversedView": true, "customer": C
... (truncated)
```
---
### deleteProject
**Type:** Mutation
**Returns:** `a Boolean!`
To delete a Project. By default the project is moved to the trash
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | id of the Project |
| `now` | `Boolean` | No | flag to be able to immediately delete the Project otherwise it is moved to the trash. Default = false |
**Example Query:**
```graphql
mutation deleteProject( $id: [ID!]!, $now: Boolean ) { deleteProject( id: $id, now: $now ) }
```
**Example Variables:**
```json
{"id": [4], "now": false}
```
**Example Response:**
```json
{"data": {"deleteProject": false}}
```
---
### createFolder
**Type:** Mutation
**Returns:** `a Folder!`
To create a Folder
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `name` | `String!` | Yes | — |
| `in` | `ID!` | Yes | — |
| `setup` | `iFolderSetup` | No | — |
**Example Query:**
```graphql
mutation createFolder( $name: String!, $in: ID!, $setup: iFolderSetup ) { createFolder( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...FolderFragment } color icon } }
```
**Example Variables:**
```json
{ "name": "xyz789", "in": 4, "setup": iFolderSetup }
```
**Example Response:**
```json
{ "data": { "createFolder": { "id": 4, "name": "xyz789", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "trashDate": "2007-12-03T10:15:30Z", "trashUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "readOnly": true, "productionSettings": ProductionSettings, "processes": [Process], "accessControlList": AccessControlList, "children": PagingResponse, "project": Project, "parents": [Container], "path": [Folder], "color": "xyz789", "icon": 4 } } }
```
---
## Assets
### assets
**Type:** Query
**Returns:** `an AssetPagingResponse!`
Retrieve Assets by filter
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `filter` | `iFilter` | No | — |
| `limit` | `Int` | No | — |
| `cursor` | `ID` | No | — |
| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} |
**Example Query:**
```graphql
query assets( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { assets( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...AssetFragment } } }
```
**Example Variables:**
```json
{ "filter": iFilter, "limit": 987, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} }
```
**Example Response:**
```json
{ "data": { "assets": { "lowerCursor": "4", "upperCursor": "4", "hasMoreItems": false, "objectList": [Asset] } } }
```
---
### assetById
**Type:** Query
**Returns:** `[Asset!]`
Retrieve Assets by ID or [ID]
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | — |
**Example Query:**
```graphql
query assetById($id: [ID!]!) { assetById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }
```
**Example Variables:**
```json
{"id": [4]}
```
**Example Response:**
```json
{ "data": { "assetById": [ { "id": 4, "name": "xyz789", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "trashDate": "2007-12-03T10:15:30Z", "trashUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "status": ["ACTIVE"], "approvalSummary": "NONE", "approvalStatus": [ApprovalActivityStatus], "approvals": [ApprovalCycle], "workflowName": "abc123", "isAlias": false, "processes": [Process], "uuid": "abc123", "priority": 987, "isCheckedOut": false, "checkedOutBy": User, "privateWorkingRevision": 987, "isArchived": true, "archiveId": 4, "colorSpace": ColorSpace, "viewingCondition": ViewingCondition, "project": Project, "parents": [Container], "numberO
... (truncated)
```
---
### createAsset
**Type:** Mutation
**Returns:** `an AssetCreationStatus!`
To create an Asset.
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `in` | `[ID!]!` | Yes | — |
| `name` | `String` | No | — |
| `checkedOut` | `Boolean` | No | Default = false |
| `setup` | `iAssetSetup` | No | — |
| `input` | `iInputFile` | No | — |
**Example Query:**
```graphql
mutation createAsset( $in: [ID!]!, $name: String, $checkedOut: Boolean, $setup: iAssetSetup, $input: iInputFile ) { createAsset( in: $in, name: $name, checkedOut: $checkedOut, setup: $setup, input: $input ) { created asset { ...AssetFragment } } }
```
**Example Variables:**
```json
{ "in": ["4"], "name": "xyz789", "checkedOut": false, "setup": iAssetSetup, "input": iInputFile }
```
**Example Response:**
```json
{ "data": { "createAsset": {"created": false, "asset": Asset} } }
```
---
### deleteAsset
**Type:** Mutation
**Returns:** `a Boolean!`
To delete an Asset. By default the Asset is moved to the trash
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | id of the Asset |
| `now` | `Boolean` | No | flag to be able to immediately delete the Asset otherwise it is moved to the trash. Default = false |
**Example Query:**
```graphql
mutation deleteAsset( $id: [ID!]!, $now: Boolean ) { deleteAsset( id: $id, now: $now ) }
```
**Example Variables:**
```json
{"id": [4], "now": false}
```
**Example Response:**
```json
{"data": {"deleteAsset": false}}
```
---
### downloadAsset
**Type:** Query
**Returns:** `a Stream`
Stream an Asset
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `ID!` | Yes | — |
| `revision` | `Int` | No | Default = 0 |
**Example Query:**
```graphql
query downloadAsset( $id: ID!, $revision: Int ) { downloadAsset( id: $id, revision: $revision ) }
```
**Example Variables:**
```json
{"id": "4", "revision": 0}
```
**Example Response:**
```json
{"data": {"downloadAsset": Stream}}
```
---
## Organizations & Customers
### customers
**Type:** Query
**Returns:** `a CustomerPagingResponse!`
Retrieve Customers by filter
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `filter` | `iFilter` | No | — |
| `limit` | `Int` | No | — |
| `cursor` | `ID` | No | — |
| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} |
**Example Query:**
```graphql
query customers( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { customers( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...CustomerFragment } } }
```
**Example Variables:**
```json
{ "filter": iFilter, "limit": 123, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} }
```
**Example Response:**
```json
{ "data": { "customers": { "lowerCursor": "4", "upperCursor": 4, "hasMoreItems": false, "objectList": [Customer] } } }
```
---
### customerById
**Type:** Query
**Returns:** `[Customer!]`
Retrieve Customers by ID or [ID]
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | — |
**Example Query:**
```graphql
query customerById($id: [ID!]!) { customerById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } sites defaultSite defaultProjectTemplate { ...ProjectTemplateFragment } projectTemplates { ...ProjectTemplateFragment } code phone phone2 www fax shippingAddress { ...AddressFragment } billingAddress { ...AddressFragment } organization { ...OrganizationFragment } children { ...PagingResponseFragment } emailTemplates { ...EmailTemplateFragment } notificationTemplates { ...NotificationTemplateFragment } securityConfiguration { ...SecurityConfigurationFragment } notifications { ...NotificationFragment } } }
```
**Example Variables:**
```json
{"id": [4]}
```
**Example Response:**
```json
{ "data": { "customerById": [ { "id": 4, "name": "abc123", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "sites": ["abc123"], "defaultSite": "xyz789", "defaultProjectTemplate": ProjectTemplate, "projectTemplates": [ProjectTemplate], "code": "xyz789", "phone": "abc123", "phone2": "abc123", "www": "xyz789", "fax": "abc123", "shippingAddress": Address, "billingAddress": Address, "organization": Organization, "children": PagingResponse, "emailTemplates": [EmailTemplate], "notificationTemplates": [NotificationTemplate], "securityConfiguration": SecurityConfiguration, "notifications": [Notification] } ] } }
```
---
### groups
**Type:** Query
**Returns:** `a GroupPagingResponse!`
Retrieve visible groups by the current logged user
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `filter` | `iFilter` | No | — |
| `limit` | `Int` | No | — |
| `cursor` | `ID` | No | — |
| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} |
**Example Query:**
```graphql
query groups( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { groups( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...GroupFragment } } }
```
**Example Variables:**
```json
{ "filter": iFilter, "limit": 123, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} }
```
**Example Response:**
```json
{ "data": { "groups": { "lowerCursor": "4", "upperCursor": 4, "hasMoreItems": false, "objectList": [Group] } } }
```
---
### addUserToGroup
**Type:** Mutation
**Returns:** `a Boolean!`
Add one or many Users to one or many Groups that are not System Groups. All the Users provided will be added to each Groups provided
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | — |
| `to` | `[ID!]!` | Yes | — |
**Example Query:**
```graphql
mutation addUserToGroup( $id: [ID!]!, $to: [ID!]! ) { addUserToGroup( id: $id, to: $to ) }
```
**Example Variables:**
```json
{"id": ["4"], "to": [4]}
```
**Example Response:**
```json
{"data": {"addUserToGroup": false}}
```
---
## Search
### search
**Type:** Query
**Returns:** `a SearchResponse`
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `filter` | `iSearchFilter!` | Yes | — |
| `facets` | `[String!]` | Yes | — |
| `limit` | `Int` | No | — |
| `cursor` | `ID` | No | — |
**Example Query:**
```graphql
query search( $filter: iSearchFilter!, $facets: [String!], $limit: Int, $cursor: ID ) { search( filter: $filter, facets: $facets, limit: $limit, cursor: $cursor ) { upperCursor hasMoreItems objectList { ...EntityFragment } scores facets { ...FacetFragment } } }
```
**Example Variables:**
```json
{ "filter": iSearchFilter, "facets": ["abc123"], "limit": 987, "cursor": 4 }
```
**Example Response:**
```json
{ "data": { "search": { "upperCursor": "4", "hasMoreItems": false, "objectList": [Entity], "scores": [987.65], "facets": [Facet] } } }
```
---
## Approvals
### approve
**Type:** Mutation
**Returns:** `a Boolean!`
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | The id(s) of the request approval(s) to approve |
| `comment` | `String` | No | The comment associated to the approve action |
| `checkViewingCondition` | `Boolean` | No | Specify if the viewing condition should be checked or not. Default = true |
**Example Query:**
```graphql
mutation approve( $id: [ID!]!, $comment: String, $checkViewingCondition: Boolean ) { approve( id: $id, comment: $comment, checkViewingCondition: $checkViewingCondition ) }
```
**Example Variables:**
```json
{ "id": [4], "comment": "xyz789", "checkViewingCondition": true }
```
**Example Response:**
```json
{"data": {"approve": true}}
```
---
### approveObject
**Type:** Mutation
**Returns:** `a Boolean!`
**Arguments:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | `[ID!]!` | Yes | The id(s) of the object(s) to approve |
| `comment` | `String` | No | The comment associated to the approve action |
| `checkViewingCondition` | `Boolean` | No | Specify if the viewing condition should be checked or not. Default = true |
**Example Query:**
```graphql
mutation approveObject( $id: [ID!]!, $comment: String, $checkViewingCondition: Boolean ) { approveObject( id: $id, comment: $comment, checkViewingCondition: $checkViewingCondition ) }
```
**Example Variables:**
```json
{ "id": [4], "comment": "xyz789", "checkViewingCondition": true }
```
**Example Response:**
```json
{"data": {"approveObject": false}}
```
---