openapi: 3.2.0 info: title: Genialis base Data API version: 0.0.0 description: Backend of the Genialis platform. servers: - url: https://app.genialis.com description: Base URL declared by the provider in apis.yml (roadmap#122). tags: - name: Data paths: /api/data: get: operationId: api_data_list description: API view for :class:`Data` objects. parameters: - in: query name: build schema: type: string - in: query name: collection schema: type: integer - in: query name: collection__in schema: type: array items: type: integer description: Multiple values may be separated by commas. explode: false style: form - in: query name: collection__isnull schema: type: boolean - in: query name: collection__name schema: type: string - in: query name: collection__name__contains schema: type: string - in: query name: collection__name__icontains schema: type: string - in: query name: collection__name__iexact schema: type: string - in: query name: collection__name__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: collection__name__isnull schema: type: boolean - in: query name: collection__name__istartswith schema: type: string - in: query name: collection__name__startswith schema: type: string - in: query name: collection__slug schema: type: string - in: query name: collection__slug__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: contributor schema: type: integer - in: query name: contributor__in schema: type: array items: type: integer description: Multiple values may be separated by commas. explode: false style: form - in: query name: contributor_name schema: type: string - in: query name: created schema: type: string format: date-time - in: query name: created__date schema: type: string format: date - in: query name: created__gt schema: type: string format: date-time - in: query name: created__gte schema: type: string format: date-time - in: query name: created__isnull schema: type: boolean - in: query name: created__lt schema: type: string format: date-time - in: query name: created__lte schema: type: string format: date-time - in: query name: created__time schema: type: string format: time - in: query name: entity schema: type: integer - in: query name: entity__in schema: type: array items: type: integer description: Multiple values may be separated by commas. explode: false style: form - in: query name: entity__isnull schema: type: boolean - in: query name: entity__name schema: type: string - in: query name: entity__name__contains schema: type: string - in: query name: entity__name__icontains schema: type: string - in: query name: entity__name__iexact schema: type: string - in: query name: entity__name__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: entity__name__isnull schema: type: boolean - in: query name: entity__name__istartswith schema: type: string - in: query name: entity__name__startswith schema: type: string - in: query name: entity__slug schema: type: string - in: query name: entity__slug__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: feature_type schema: type: string - in: query name: finished schema: type: string format: date-time - in: query name: finished__date schema: type: string format: date - in: query name: finished__gt schema: type: string format: date-time - in: query name: finished__gte schema: type: string format: date-time - in: query name: finished__isnull schema: type: boolean - in: query name: finished__lt schema: type: string format: date-time - in: query name: finished__lte schema: type: string format: date-time - in: query name: finished__time schema: type: string format: time - in: query name: group schema: type: string - in: query name: id schema: type: integer - in: query name: id__gt schema: type: integer - in: query name: id__gte schema: type: integer - in: query name: id__in schema: type: array items: type: integer description: Multiple values may be separated by commas. explode: false style: form - in: query name: id__isnull schema: type: boolean - in: query name: id__lt schema: type: integer - in: query name: id__lte schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified schema: type: string format: date-time - in: query name: modified__date schema: type: string format: date - in: query name: modified__gt schema: type: string format: date-time - in: query name: modified__gte schema: type: string format: date-time - in: query name: modified__isnull schema: type: boolean - in: query name: modified__lt schema: type: string format: date-time - in: query name: modified__lte schema: type: string format: date-time - in: query name: modified__time schema: type: string format: time - in: query name: name schema: type: string - in: query name: name__contains schema: type: string - in: query name: name__icontains schema: type: string - in: query name: name__iexact schema: type: string - in: query name: name__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: name__isnull schema: type: boolean - in: query name: name__istartswith schema: type: string - in: query name: name__startswith schema: type: string - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: owners schema: type: integer - in: query name: owners_name schema: type: string - in: query name: permission schema: type: string - in: query name: process schema: type: integer - in: query name: process__in schema: type: array items: type: integer description: Multiple values may be separated by commas. explode: false style: form - in: query name: process__isnull schema: type: boolean - in: query name: process__name schema: type: string - in: query name: process__name__contains schema: type: string - in: query name: process__name__icontains schema: type: string - in: query name: process__name__iexact schema: type: string - in: query name: process__name__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: process__name__isnull schema: type: boolean - in: query name: process__name__istartswith schema: type: string - in: query name: process__name__startswith schema: type: string - in: query name: process__slug schema: type: string - in: query name: process__slug__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: relation_id schema: type: number - in: query name: shared_with_me schema: type: boolean - in: query name: slug schema: type: string - in: query name: slug__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: source schema: type: string - in: query name: species schema: type: string - in: query name: started schema: type: string format: date-time - in: query name: started__date schema: type: string format: date - in: query name: started__gt schema: type: string format: date-time - in: query name: started__gte schema: type: string format: date-time - in: query name: started__isnull schema: type: boolean - in: query name: started__lt schema: type: string format: date-time - in: query name: started__lte schema: type: string format: date-time - in: query name: started__time schema: type: string format: time - in: query name: status schema: type: string enum: - DR - ER - OK - PP - PR - RE - UP - WT description: '* `UP` - Uploading * `RE` - Resolving * `WT` - Waiting * `PP` - Preparing * `PR` - Processing * `OK` - Done * `ER` - Error * `DR` - Dirty' - in: query name: status__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: tags schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: type schema: type: string - in: query name: type__exact schema: type: string - in: query name: version schema: type: string - in: query name: version__gt schema: type: string - in: query name: version__gte schema: type: string - in: query name: version__in schema: type: array items: type: string description: Multiple values may be separated by commas. explode: false style: form - in: query name: version__isnull schema: type: boolean - in: query name: version__lt schema: type: string - in: query name: version__lte schema: type: string tags: - Data security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDataSerializerWithPermissionsList' description: '' summary: Api data list x-summary-source: derived post: operationId: api_data_create description: Create a resource. tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' multipart/form-data: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' required: true security: - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' description: '' summary: Api data create x-summary-source: derived /api/data/{id}: get: operationId: api_data_retrieve description: API view for :class:`Data` objects. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true tags: - Data security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' description: '' summary: Api data retrieve x-summary-source: derived put: operationId: api_data_update description: Update a resource. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' multipart/form-data: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' required: true security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' description: '' summary: Api data update x-summary-source: derived patch: operationId: api_data_partial_update description: API view for :class:`Data` objects. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDataSerializerWithPermissions' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDataSerializerWithPermissions' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDataSerializerWithPermissions' security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' description: '' summary: Api data partial update x-summary-source: derived delete: operationId: api_data_destroy description: Delete a resource. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true tags: - Data security: - cookieAuth: [] responses: '204': description: No response body summary: Api data destroy x-summary-source: derived /api/data/{id}/children: get: operationId: api_data_children_retrieve description: Return children of the current data object. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true tags: - Data security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' description: '' summary: Api data children retrieve x-summary-source: derived /api/data/{id}/parents: get: operationId: api_data_parents_list description: Return parents of the current data object. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - Data security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDataList' description: '' summary: Api data parents list x-summary-source: derived /api/data/{id}/permissions: get: operationId: api_data_permissions_retrieve description: Get or set permissions API endpoint. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true tags: - Data security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CurrentUserPermissions' description: '' summary: Api data permissions retrieve x-summary-source: derived post: operationId: api_data_permissions_create description: Get or set permissions API endpoint. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/Permission' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Permission' multipart/form-data: schema: $ref: '#/components/schemas/Permission' security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CurrentUserPermissions' description: '' summary: Api data permissions create x-summary-source: derived /api/data/{id}/restart: post: operationId: api_data_restart_create description: Restart the current data object. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this data. required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/Restart' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Restart' multipart/form-data: schema: $ref: '#/components/schemas/Restart' security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDataList' description: '' summary: Api data restart create x-summary-source: derived /api/data/bulk_delete: post: operationId: api_data_bulk_delete_create description: 'Bulk delete objects in the background. The background task is returned.' tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/Delete' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Delete' multipart/form-data: schema: $ref: '#/components/schemas/Delete' required: true security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BackgroundTask' description: '' summary: Api data bulk delete create x-summary-source: derived /api/data/duplicate: post: operationId: api_data_duplicate_create description: 'Bulk duplicate objects in the background. The background task is returned.' tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/Duplicate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Duplicate' multipart/form-data: schema: $ref: '#/components/schemas/Duplicate' required: true security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BackgroundTask' description: '' summary: Api data duplicate create x-summary-source: derived /api/data/get_or_create: post: operationId: api_data_get_or_create_create description: Get ``Data`` object if similar already exists, otherwise create it. tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' multipart/form-data: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' required: true security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DataSerializerWithPermissions' description: '' summary: Api data get or create create x-summary-source: derived /api/data/move_to_collection: post: operationId: api_data_move_to_collection_create description: Move data objects to destination collection. tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/MoveDataToCollection' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MoveDataToCollection' multipart/form-data: schema: $ref: '#/components/schemas/MoveDataToCollection' required: true security: - cookieAuth: [] responses: '200': description: No response body summary: Api data move to collection create x-summary-source: derived /api/data/slug_exists: get: operationId: api_data_slug_exists_retrieve description: 'Check if given url slug exists. Check if slug given in query parameter ``name`` exists. Return ``True`` if slug already exists and ``False`` otherwise.' parameters: - in: query name: name schema: type: string minLength: 1 required: true tags: - Data security: - cookieAuth: [] responses: '200': content: application/json: schema: type: boolean description: '' summary: Api data slug exists retrieve x-summary-source: derived /api/data/subscribe: post: operationId: api_data_subscribe_create description: Register an Observer for a resource. tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/ObserverSubscribeRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ObserverSubscribeRequest' multipart/form-data: schema: $ref: '#/components/schemas/ObserverSubscribeRequest' required: true security: - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ObserverSubscription' description: '' summary: Api data subscribe create x-summary-source: derived /api/data/unsubscribe: post: operationId: api_data_unsubscribe_create description: Unregister a subscription. tags: - Data requestBody: content: application/json: schema: $ref: '#/components/schemas/ObserverSubscription' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ObserverSubscription' multipart/form-data: schema: $ref: '#/components/schemas/ObserverSubscription' required: true security: - cookieAuth: [] responses: '200': description: No response body summary: Api data unsubscribe create x-summary-source: derived components: schemas: BackgroundTaskStatusEnum: enum: - WT - PR - OK - ER type: string description: '* `WT` - Waiting * `PR` - Processing * `OK` - Done * `ER` - Error' DataStatus: enum: - UP - RE - WT - PP - PR - OK - ER - DR type: string description: '* `UP` - Uploading * `RE` - Resolving * `WT` - Waiting * `PP` - Preparing * `PR` - Processing * `OK` - Done * `ER` - Error * `DR` - Dirty' PaginatedDataSerializerWithPermissionsList: type: object required: - count - results properties: count: type: integer example: 123 next: type: - string - 'null' format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: - string - 'null' format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/DataSerializerWithPermissions' DataSerializerWithPermissions: type: object description: Serializer for Data objects. properties: checksum: type: string readOnly: true created: type: string format: date-time readOnly: true descriptor_dirty: type: boolean readOnly: true duplicated: type: - string - 'null' format: date-time readOnly: true finished: type: - string - 'null' format: date-time readOnly: true id: type: integer readOnly: true modified: type: string format: date-time readOnly: true process_cores: type: integer readOnly: true process_error: type: array items: type: string maxLength: 255 readOnly: true process_info: type: array items: type: string maxLength: 255 readOnly: true process_memory: type: integer readOnly: true process_progress: type: integer readOnly: true process_rc: type: - integer - 'null' readOnly: true process_warning: type: array items: type: string maxLength: 255 readOnly: true output: {} scheduled: type: - string - 'null' format: date-time readOnly: true size: type: integer readOnly: true started: type: - string - 'null' format: date-time readOnly: true status: allOf: - $ref: '#/components/schemas/DataStatus' readOnly: true contributor: $ref: '#/components/schemas/Contributor' input: {} process: $ref: '#/components/schemas/RelationshipDict' collection: allOf: - $ref: '#/components/schemas/RelationshipDict' descriptor: {} descriptor_schema: allOf: - $ref: '#/components/schemas/RelationshipDict' entity: allOf: - $ref: '#/components/schemas/RelationshipDict' name: type: string slug: type: - string - 'null' tags: type: array items: type: string maxLength: 255 process_resources: {} current_user_permissions: type: array items: $ref: '#/components/schemas/CurrentUserPermissions' readOnly: true required: - checksum - contributor - created - current_user_permissions - descriptor_dirty - duplicated - finished - id - modified - process - process_cores - process_error - process_info - process_memory - process_progress - process_rc - process_warning - scheduled - size - started - status Duplicate: type: object description: Deserializer for duplicate endpoint. properties: ids: type: array items: type: integer required: - ids PermissionsEnum: enum: - none - view - edit - share - owner type: string description: '* `none` - none * `view` - view * `edit` - edit * `share` - share * `owner` - owner' PatchedDataSerializerWithPermissions: type: object description: Serializer for Data objects. properties: checksum: type: string readOnly: true created: type: string format: date-time readOnly: true descriptor_dirty: type: boolean readOnly: true duplicated: type: - string - 'null' format: date-time readOnly: true finished: type: - string - 'null' format: date-time readOnly: true id: type: integer readOnly: true modified: type: string format: date-time readOnly: true process_cores: type: integer readOnly: true process_error: type: array items: type: string maxLength: 255 readOnly: true process_info: type: array items: type: string maxLength: 255 readOnly: true process_memory: type: integer readOnly: true process_progress: type: integer readOnly: true process_rc: type: - integer - 'null' readOnly: true process_warning: type: array items: type: string maxLength: 255 readOnly: true output: {} scheduled: type: - string - 'null' format: date-time readOnly: true size: type: integer readOnly: true started: type: - string - 'null' format: date-time readOnly: true status: allOf: - $ref: '#/components/schemas/DataStatus' readOnly: true contributor: $ref: '#/components/schemas/Contributor' input: {} process: $ref: '#/components/schemas/RelationshipDict' collection: allOf: - $ref: '#/components/schemas/RelationshipDict' descriptor: {} descriptor_schema: allOf: - $ref: '#/components/schemas/RelationshipDict' entity: allOf: - $ref: '#/components/schemas/RelationshipDict' name: type: string slug: type: - string - 'null' tags: type: array items: type: string maxLength: 255 process_resources: {} current_user_permissions: type: array items: $ref: '#/components/schemas/CurrentUserPermissions' readOnly: true MoveDataToCollection: type: object description: Deserializer for data move to collection endpoint. properties: ids: type: array items: type: integer destination_collection: type: integer required: - destination_collection - ids Contributor: type: object description: Serializer for contributor User objects. properties: first_name: type: string maxLength: 150 id: type: integer readOnly: true last_name: type: string maxLength: 150 username: type: string description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. pattern: ^[\w.@+-]+$ maxLength: 150 required: - id - username PublicEnum: enum: - VIEW - EDIT - SHARE - OWNER type: string description: '* `VIEW` - VIEW * `EDIT` - EDIT * `SHARE` - SHARE * `OWNER` - OWNER' CurrentUserPermissionsTypeEnum: enum: - user - group - public type: string description: '* `user` - user * `group` - group * `public` - public' PaginatedDataList: type: object required: - count - results properties: count: type: integer example: 123 next: type: - string - 'null' format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: - string - 'null' format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Data' BackgroundTask: type: object description: Serialize the BackgroundTask model. properties: id: type: integer readOnly: true started: type: - string - 'null' format: date-time finished: type: - string - 'null' format: date-time status: $ref: '#/components/schemas/BackgroundTaskStatusEnum' description: type: string maxLength: 256 output: {} required: - description - id Permission: type: object description: 'Permission serializer. Dictionary keys for users and groups are either ids or usernames (emails) or group names.' properties: users: type: object additionalProperties: enum: - VIEW - EDIT - SHARE - OWNER type: string description: '* `VIEW` - VIEW * `EDIT` - EDIT * `SHARE` - SHARE * `OWNER` - OWNER' groups: type: object additionalProperties: enum: - VIEW - EDIT - SHARE - OWNER type: string description: '* `VIEW` - VIEW * `EDIT` - EDIT * `SHARE` - SHARE * `OWNER` - OWNER' public: $ref: '#/components/schemas/PublicEnum' Restart: type: object description: Serializer for restarting a Data object. properties: resource_overrides: {} ObserverSubscribeRequest: type: object description: Serializer for the subscribe endpoint. properties: ids: type: - array - 'null' items: type: integer session_id: type: string required: - session_id Data: type: object description: Serializer for Data objects. properties: checksum: type: string readOnly: true created: type: string format: date-time readOnly: true descriptor_dirty: type: boolean readOnly: true duplicated: type: - string - 'null' format: date-time readOnly: true finished: type: - string - 'null' format: date-time readOnly: true id: type: integer readOnly: true modified: type: string format: date-time readOnly: true process_cores: type: integer readOnly: true process_error: type: array items: type: string maxLength: 255 readOnly: true process_info: type: array items: type: string maxLength: 255 readOnly: true process_memory: type: integer readOnly: true process_progress: type: integer readOnly: true process_rc: type: - integer - 'null' readOnly: true process_warning: type: array items: type: string maxLength: 255 readOnly: true output: {} scheduled: type: - string - 'null' format: date-time readOnly: true size: type: integer readOnly: true started: type: - string - 'null' format: date-time readOnly: true status: allOf: - $ref: '#/components/schemas/DataStatus' readOnly: true contributor: $ref: '#/components/schemas/Contributor' input: {} process: $ref: '#/components/schemas/RelationshipDict' collection: allOf: - $ref: '#/components/schemas/RelationshipDict' descriptor: {} descriptor_schema: allOf: - $ref: '#/components/schemas/RelationshipDict' entity: allOf: - $ref: '#/components/schemas/RelationshipDict' name: type: string slug: type: - string - 'null' tags: type: array items: type: string maxLength: 255 process_resources: {} required: - checksum - contributor - created - descriptor_dirty - duplicated - finished - id - modified - process - process_cores - process_error - process_info - process_memory - process_progress - process_rc - process_warning - scheduled - size - started - status CurrentUserPermissions: type: object description: Current user permissions serializer. properties: id: type: integer type: $ref: '#/components/schemas/CurrentUserPermissionsTypeEnum' name: type: string maxLength: 100 username: type: string maxLength: 150 permissions: type: array items: $ref: '#/components/schemas/PermissionsEnum' required: - permissions - type ObserverSubscription: type: object description: Serializer for the subscribe response. properties: subscription_id: type: string format: uuid required: - subscription_id RelationshipDict: type: object description: Serializer for the DictRelatedField relation. properties: id: type: integer slug: type: - string - 'null' Delete: type: object description: Bulk delete given objects. properties: ids: type: array items: type: integer required: - ids securitySchemes: cookieAuth: type: apiKey in: cookie name: sessionid