StarmindClient
Attributes
Language
module-attribute
Classes
FindExpertsInput
dataclass
FindExpertsResponse
dataclass
FindExpertsResponse(*, experts: Optional[List[Dict[str, Any]]] = None, label_matches: Optional[List[ConceptLabelMatch | Mapping[str, Any]]] = None)
Response for Find experts
Attributes
experts
class-attribute
instance-attribute
List of experts matching the search query. May be empty if no experts are found.
FindQuestionsResponse
dataclass
FindQuestionsResponse(*, links: Optional[Dict[str, Any]] = None, items: Optional[List[Question | Mapping[str, Any]]] = None, total: Optional[int] = None)
GraphQLUserResponse
dataclass
PostQuestionDraftInput
dataclass
PostQuestionDraftInput(title: str, *, category: Optional[int] = None, description: Optional[str] = None, language: Optional[Language] = None, knowledge_space: Optional[int] = None)
Create a question draft
Attributes
category
class-attribute
instance-attribute
The optional id of the category to assign the question draft to
title
instance-attribute
Question title, Between 4 and 100 characters by default. Depending on the network configuration the title max length may be limited or extended further.
description
class-attribute
instance-attribute
The optional question description providing detailed context and information about the question. Depending on the network configuration the description might be enforced to be non-empty.
Question
dataclass
Question(*, knowledge_space_id: Optional[int] = None, upvote_count: Optional[int] = None, view_count: Optional[int] = None, published: Optional[str] = None, is_deleted: Optional[bool] = None, title: Optional[str] = None, last_activity: Optional[str] = None, is_published: Optional[bool] = None, created: Optional[str] = None, description: Optional[str] = None, solution_count: Optional[int] = None, content_updated: Optional[str] = None, id: Optional[int] = None, updated: Optional[str] = None, language: Optional[str] = None)
Response for Create a question draft
Attributes
knowledge_space_id
class-attribute
instance-attribute
The unique knowledge space id to which the question belongs.
upvote_count
class-attribute
instance-attribute
The total number of upvotes the question has received.
view_count
class-attribute
instance-attribute
The number of times the question has been viewed by users.
published
class-attribute
instance-attribute
Timestamp indicating when the question was published (yyyy-MM-ddTHH:mm:ss.fffZ)
is_deleted
class-attribute
instance-attribute
Indicates if the question is deleted. Deleted questions are not visible to users, but can still be accessed by the administrators.
title
class-attribute
instance-attribute
The question title
last_activity
class-attribute
instance-attribute
Timestamp indicating the last activity with the question (yyyy-MM-ddTHH:mm:ss.fffZ)
is_published
class-attribute
instance-attribute
The question is_published flag indicates whether the question is published or not. A published solution is visible to all users, while an unpublished solution is in draft state only visible to the author.
created
class-attribute
instance-attribute
Timestamp indicating when the question was created (yyyy-MM-ddTHH:mm:ss.fffZ)
description
class-attribute
instance-attribute
Question description providing detailed context and information about the question
solution_count
class-attribute
instance-attribute
This is the number of solutions that have been provided for this question.
content_updated
class-attribute
instance-attribute
Timestamp indicating when the question's content or attachments were last updated (yyyy-MM-ddTHH:mm:ss.fffZ)
id
class-attribute
instance-attribute
The unique question id
updated
class-attribute
instance-attribute
Last time the resource has been updated in the DB. This date does not reflect content updates but any update to any fields of the record. Use content_updated for information about content updates.
PublishQuestionDraftResponse
dataclass
QuestionComplete
dataclass
QuestionComplete(*, knowledge_space_id: Optional[int] = None, upvote_count: Optional[int] = None, view_count: Optional[int] = None, published: Optional[str] = None, is_deleted: Optional[bool] = None, title: Optional[str] = None, last_activity: Optional[str] = None, is_published: Optional[bool] = None, created: Optional[str] = None, description: Optional[str] = None, solution_count: Optional[int] = None, content_updated: Optional[str] = None, id: Optional[int] = None, updated: Optional[str] = None, language: Optional[str] = None, source: Optional[str] = None, concepts: Optional[List[ConceptLabelMatch | Mapping[str, Any]]] = None, knowledge_space: Optional[KnowledgeSpace | Mapping[str, Any]] = None, solutions: Optional[List[Solution | Mapping[str, Any]]] = None, attachments: Optional[List[Attachment | Mapping[str, Any]]] = None, comments: Optional[List[Comment | Mapping[str, Any]]] = None)
Definition: QuestionComplete
Attributes
knowledge_space_id
class-attribute
instance-attribute
The unique knowledge space id to which the question belongs.
upvote_count
class-attribute
instance-attribute
The total number of upvotes the question has received.
view_count
class-attribute
instance-attribute
The number of times the question has been viewed by users.
published
class-attribute
instance-attribute
Timestamp indicating when the question was published (yyyy-MM-ddTHH:mm:ss.fffZ)
is_deleted
class-attribute
instance-attribute
Indicates if the question is deleted. Deleted questions are not visible to users, but can still be accessed by the administrators.
title
class-attribute
instance-attribute
The question title
last_activity
class-attribute
instance-attribute
Timestamp indicating the last activity with the question (yyyy-MM-ddTHH:mm:ss.fffZ)
is_published
class-attribute
instance-attribute
The question is_published flag indicates whether the question is published or not. A published solution is visible to all users, while an unpublished solution is in draft state only visible to the author.
created
class-attribute
instance-attribute
Timestamp indicating when the question was created (yyyy-MM-ddTHH:mm:ss.fffZ)
description
class-attribute
instance-attribute
Question description providing detailed context and information about the question
solution_count
class-attribute
instance-attribute
This is the number of solutions that have been provided for this question.
content_updated
class-attribute
instance-attribute
Timestamp indicating when the question's content or attachments were last updated (yyyy-MM-ddTHH:mm:ss.fffZ)
id
class-attribute
instance-attribute
The unique question id
updated
class-attribute
instance-attribute
Last time the resource has been updated in the DB. This date does not reflect content updates but any update to any fields of the record. Use content_updated for information about content updates.
language
class-attribute
instance-attribute
The question language
source
class-attribute
instance-attribute
source
concepts
class-attribute
instance-attribute
concepts: Optional[List[ConceptLabelMatch | Mapping[str, Any]]] = dataclass_field(default=None, kw_only=True)
The assigned question concepts
knowledge_space
class-attribute
instance-attribute
knowledge_space: Optional[KnowledgeSpace | Mapping[str, Any]] = dataclass_field(default=None, kw_only=True)
The assigned question knowledge space
solutions
class-attribute
instance-attribute
solutions: Optional[List[Solution | Mapping[str, Any]]] = dataclass_field(default=None, kw_only=True)
The question solutions
ConceptLabelMatch
dataclass
ConceptLabelMatch(*, concept_id: Optional[str] = None, description: Optional[str] = None, is_flat: Optional[bool] = None, label_match: Optional[str] = None, language: Optional[str] = None, ontology_id: Optional[str] = None, primary_label: Optional[str] = None)
Definition: ConceptLabelMatch
Attributes
concept_id
class-attribute
instance-attribute
The unique concept id
description
class-attribute
instance-attribute
The concept description
is_flat
class-attribute
instance-attribute
is_flat
label_match
class-attribute
instance-attribute
The label that matched the concept
language
class-attribute
instance-attribute
Concept language
ontology_id
class-attribute
instance-attribute
The unique ontology id to which the concept belongs
Attachment
dataclass
Attachment(*, created: Optional[str] = None, hash: Optional[str] = None, id: Optional[int] = None, link: Optional[str] = None, mime_type: Optional[str] = None, name: Optional[str] = None, size: Optional[int] = None)
Definition: Attachment
Attributes
created
class-attribute
instance-attribute
Timestamp indicating when the attachment was created (yyyy-MM-ddTHH:mm:ss.fffZ)
hash
class-attribute
instance-attribute
The attachment hash
id
class-attribute
instance-attribute
the unique attachment id
link
class-attribute
instance-attribute
The relative url to the attachment resource
mime_type
class-attribute
instance-attribute
The attachment file mime_type
name
class-attribute
instance-attribute
The attachment file name
Comment
dataclass
Comment(*, content_updated: Optional[str] = None, created: Optional[str] = None, description: Optional[str] = None, id: Optional[int] = None, language: Optional[str] = None, updated: Optional[str] = None, upvote_count: Optional[int] = None, user: Optional[UserLegacy | Mapping[str, Any]] = None)
Definition: Comment
Attributes
content_updated
class-attribute
instance-attribute
Timestamp indicating when the comment's description was last updated (yyyy-MM-ddTHH:mm:ss.fffZ)
created
class-attribute
instance-attribute
Timestamp indicating when the comment was created (yyyy-MM-ddTHH:mm:ss.fffZ)
description
class-attribute
instance-attribute
This is the main text of the comment that provides additional information or context to the question or solution.
id
class-attribute
instance-attribute
The unique comment id
language
class-attribute
instance-attribute
The comment language
updated
class-attribute
instance-attribute
Last time the resource has been updated in the DB. This date does not reflect content updates but any update to any fields of the record. Use content_updated for information about content updates.
Solution
dataclass
Solution(*, accepted_by_question_poser: Optional[str] = None, attachments: Optional[List[Attachment | Mapping[str, Any]]] = None, comments: Optional[List[Comment | Mapping[str, Any]]] = None, content_updated: Optional[str] = None, created: Optional[str] = None, description: Optional[str] = None, expires: Optional[str] = None, id: Optional[int] = None, is_published: Optional[bool] = None, language: Optional[str] = None, published: Optional[str] = None, rating_count: Optional[int] = None, solution_authority_approval: Optional[SolutionAuthorityApproval | Mapping[str, Any]] = None, updated: Optional[str] = None, upvote_count: Optional[int] = None, user: Optional[UserLegacy | Mapping[str, Any]] = None, validated: Optional[SolutionValidation | Mapping[str, Any]] = None, validity_period: Optional[str] = None)
Definition: Solution
Attributes
accepted_by_question_poser
class-attribute
instance-attribute
Timestamp indicating whether the solution has been accepted by the question poser (yyyy-MM-ddTHH:mm:ss.fffZ)
attachments
class-attribute
instance-attribute
attachments: Optional[List[Attachment | Mapping[str, Any]]] = dataclass_field(default=None, kw_only=True)
The solution attachments
comments
class-attribute
instance-attribute
The solution comments
content_updated
class-attribute
instance-attribute
Timestamp indicating when the solution's content was last updated (yyyy-MM-ddTHH:mm:ss.fffZ)
created
class-attribute
instance-attribute
Timestamp indicating when the solution was created (yyyy-MM-ddTHH:mm:ss.fffZ)
description
class-attribute
instance-attribute
This is the main text of the solution that provides the answer or guidance to the question posed.
expires
class-attribute
instance-attribute
Timestamp indicating when the solution is about to expiry and requires revalidation (yyyy-MM-ddTHH:mm:ss.fffZ)
id
class-attribute
instance-attribute
the unique solution id
is_published
class-attribute
instance-attribute
The solution is_published flag indicates whether the solution is published or not. A published solution is visible to all users.
language
class-attribute
instance-attribute
The solution language
published
class-attribute
instance-attribute
Timestamp indicating when the solution was published (yyyy-MM-ddTHH:mm:ss.fffZ)
rating_count
class-attribute
instance-attribute
Total number of ratings for the solution.
updated
class-attribute
instance-attribute
Last time the resource has been updated in the DB. This date does not reflect content updates but any update to any fields of the record. Use content_updated for information about content updates.
upvote_count
class-attribute
instance-attribute
The total number of upvotes the solution has received.
user
class-attribute
instance-attribute
The user who created the solution
SolutionValidation
dataclass
SolutionValidation(*, revalidated_at: Optional[str] = None, validity_period: Optional[str] = None, user: Optional[UserLegacy | Mapping[str, Any]] = None)
Definition: SolutionValidation
Attributes
revalidated_at
class-attribute
instance-attribute
revalidated_at: Optional[str] = dataclass_field(default=None, kw_only=True, metadata={'wire_name': 'revalidatedAt'})
The date when the solution was revalidated
SolutionAuthorityApproval
dataclass
SolutionAuthorityApproval(*, approval_date: Optional[str] = None, solution_authority_id: Optional[int] = None, solution_authority_name: Optional[str] = None, user: Optional[UserLegacy | Mapping[str, Any]] = None)
Definition: SolutionAuthorityApproval
Attributes
approval_date
class-attribute
instance-attribute
Date of the solution authority approval (yyyy-MM-ddTHH:mm:ss.fffZ)
solution_authority_id
class-attribute
instance-attribute
ID of the solution authority
UserLegacy
dataclass
UserLegacy(*, email: Optional[str] = None, global_user_id: Optional[str] = None, image: Optional[str] = None, firstname: Optional[str] = None, lastname: Optional[str] = None)
Definition: UserLegacy
Attributes
email
class-attribute
instance-attribute
global_user_id
class-attribute
instance-attribute
global_user_id: Optional[str] = dataclass_field(default=None, kw_only=True, metadata={'wire_name': 'globalUserId'})
global_user_id
image
class-attribute
instance-attribute
image
firstname
class-attribute
instance-attribute
firstname
User
dataclass
User(*, about: Optional[str] = None, avatar_url: Optional[str] = None, company: Optional[str] = None, country: Optional[str] = None, created: Optional[str] = None, deleted: Optional[str] = None, department: Optional[str] = None, email: Optional[str] = None, first_name: Optional[str] = None, first_seen: Optional[str] = None, id: Optional[UserId] = None, is_federated: Optional[bool] = None, is_technical: Optional[bool] = None, language: Optional[Language] = None, last_name: Optional[str] = None, location: Optional[str] = None, position: Optional[str] = None)
Definition: User
Attributes
about
class-attribute
instance-attribute
Custom text entered by the user to describe themselves in their 'About Me' section
avatar_url
class-attribute
instance-attribute
URL to the user's avatar image
company
class-attribute
instance-attribute
Company of the user
country
class-attribute
instance-attribute
ISO 3166-1 alpha-2 country code (e.g. ch, us, de) of the user
created
class-attribute
instance-attribute
Timestamp indicating when the user was created (yyyy-MM-ddTHH:mm:ss.fffZ)
deleted
class-attribute
instance-attribute
Timestamp indicating when the user was deleted (yyyy-MM-ddTHH:mm:ss.fffZ). Without admin permissions, only non deleted user will be returned
department
class-attribute
instance-attribute
Department of the user
email
class-attribute
instance-attribute
Email of the user
first_name
class-attribute
instance-attribute
First name of the user.
first_seen
class-attribute
instance-attribute
Timestamp indicating when the user logged in the first time (yyyy-MM-ddTHH:mm:ss.fffZ)
is_federated
class-attribute
instance-attribute
Indicates whether the user authenticates using local credentials (email/password) rather than an external SSO provider (SAML, OpenID Connect)
is_technical
class-attribute
instance-attribute
Indicates whether the user is a technical API user (non-interactive/machine account); when true the user typically authenticates via API key
language
class-attribute
instance-attribute
The user's interface language preference
last_name
class-attribute
instance-attribute
Last name of the user.
location
class-attribute
instance-attribute
Location of the user
KnowledgeSpace
dataclass
KnowledgeSpace(*, automatic_new_user_assignment: Optional[bool] = None, created: Optional[str] = None, description: Optional[str] = None, id: Optional[int] = None, is_closed: Optional[bool] = None, member_count: Optional[int] = None, name: Optional[str] = None, updated: Optional[str] = None)
Definition: KnowledgeSpace
Attributes
automatic_new_user_assignment
class-attribute
instance-attribute
Indicates if new users are automatically assigned
created
class-attribute
instance-attribute
Timestamp indicating when the knowledge space was created (yyyy-MM-ddTHH:mm:ss.fffZ)
description
class-attribute
instance-attribute
Description of the knowledge space
id
class-attribute
instance-attribute
The unique knowledge space id
is_closed
class-attribute
instance-attribute
Indicates if the knowledge space is non public
member_count
class-attribute
instance-attribute
Number of members
name
class-attribute
instance-attribute
Name of the knowledge space
GraphQLError
dataclass
GraphQLError(*, extensions: Optional[Dict[str, Any]] = None, locations: Optional[List[Dict[str, Any]]] = None, message: Optional[str] = None, path: Optional[List[str]] = None)
Definition: GraphQLError
StarmindClient
StarmindClient(connection_runtime_url: str, credential: AsyncTokenCredential | AzureKeyCredential, *, max_retry_attempts: int = 3, timeout: float = 30.0, use_exponential_backoff: bool = True, initial_retry_delay_seconds: float = 0.5, maximum_retry_delay_seconds: float = 120.0, retry_jitter_factor: float = 0.1, retry_unsafe_http_methods: bool = False, transport: Optional[AsyncHttpTransport] = None, **kwargs: Any)
Bases: ConnectorClientBase
Typed client for starmind connector.
Initialize a StarmindClient.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
connection_runtime_url
|
str
|
The connection runtime URL from Azure Portal. |
required |
credential
|
AsyncTokenCredential | AzureKeyCredential
|
Caller-owned Azure Core credential. |
required |
max_retry_attempts
|
int
|
The maximum number of request attempts. |
3
|
timeout
|
float
|
The network timeout in seconds for each request. The value configures Azure Core retry and transport deadlines. Nonpositive values disable SDK and transport deadlines. |
30.0
|
use_exponential_backoff
|
bool
|
Whether retries use exponential backoff. |
True
|
initial_retry_delay_seconds
|
float
|
The initial retry delay in seconds. |
0.5
|
maximum_retry_delay_seconds
|
float
|
The maximum retry delay in seconds. |
120.0
|
retry_jitter_factor
|
float
|
The jitter fraction applied to retry delays. |
0.1
|
retry_unsafe_http_methods
|
bool
|
Whether unsafe HTTP methods may be retried. |
False
|
transport
|
Optional[AsyncHttpTransport]
|
Optional Azure Core async HTTP transport closed by the client through its asynchronous lifecycle. |
None
|
**kwargs
|
Any
|
Optional Azure Core pipeline policy settings. |
{}
|
Methods:
find_experts
async
find_experts(input: FindExpertsInput | Mapping[str, Any], *, timeout: Optional[float] = None, headers: Optional[Mapping[str, str]] = None, client_request_id: Optional[str] = None, response_hook: Optional[ConnectorResponseHook] = None) -> dict[str, Any] | None
Find experts
Finds experts based on the provided text_query. The search leverages the knowledge graph to identify users with relevant expertise and knowledge related to the query. Provide the optional language to specify the preferred language for concept label filtering. This does not affect the search matching itself; it only filters which expertise we show from returned users by selecting concepts based on the primary label in the chosen language. Returned concepts are deduplicated when multiple concepts share the same primary label.
Swagger operation ID: FindExperts_V3.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
input
|
FindExpertsInput | Mapping[str, Any]
|
The request body. Mapping keys use serialized Swagger wire names. |
required |
timeout
|
Optional[float]
|
The request timeout in seconds. |
None
|
headers
|
Optional[Mapping[str, str]]
|
Additional HTTP request headers. |
None
|
client_request_id
|
Optional[str]
|
A caller-provided request identifier. |
None
|
response_hook
|
Optional[ConnectorResponseHook]
|
A callback invoked with the connector response. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, Any] | None
|
dict[str, Any] | None: The connector operation result. |
Raises:
| Type | Description |
|---|---|
ConnectorException
|
If the connector request fails. |
find_questions
async
find_questions(*, query: Optional[str] = None, limit: Optional[int] = None, filter: Optional[str] = None, sort: Optional[str] = None, timeout: Optional[float] = None, headers: Optional[Mapping[str, str]] = None, client_request_id: Optional[str] = None, response_hook: Optional[ConnectorResponseHook] = None) -> dict[str, Any] | None
Find questions
Searches questions using optional query, limit (default 10),
filter, and sort; returns a paginated collection with question
items. By default, all published questions are returned, ordered by
their last activity (descending). A combination of filters, search
queries and ordering criteria can be applied to the result.
Swagger operation ID: FindQuestions_V3.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query
|
Optional[str]
|
The question search query. |
None
|
limit
|
Optional[int]
|
Limit the number of returned questions. Defaults to 10. |
None
|
filter
|
Optional[str]
|
Filter the list of questions using a predefined filter. |
None
|
sort
|
Optional[str]
|
Specify the criteria the result is sorted by. |
None
|
timeout
|
Optional[float]
|
The request timeout in seconds. |
None
|
headers
|
Optional[Mapping[str, str]]
|
Additional HTTP request headers. |
None
|
client_request_id
|
Optional[str]
|
A caller-provided request identifier. |
None
|
response_hook
|
Optional[ConnectorResponseHook]
|
A callback invoked with the connector response. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, Any] | None
|
dict[str, Any] | None: The connector operation result. |
Raises:
| Type | Description |
|---|---|
ConnectorException
|
If the connector request fails. |
get_user_by_id
async
get_user_by_id(id: str, *, timeout: Optional[float] = None, headers: Optional[Mapping[str, str]] = None, client_request_id: Optional[str] = None, response_hook: Optional[ConnectorResponseHook] = None) -> dict[str, Any] | None
Get user by id
Retrieves user information based on the provided user id.
Swagger operation ID: GetUserById_V3.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id
|
str
|
The unique global user identifier (UUID) as path parameter used to reference the user across the Starmind platform. |
required |
timeout
|
Optional[float]
|
The request timeout in seconds. |
None
|
headers
|
Optional[Mapping[str, str]]
|
Additional HTTP request headers. |
None
|
client_request_id
|
Optional[str]
|
A caller-provided request identifier. |
None
|
response_hook
|
Optional[ConnectorResponseHook]
|
A callback invoked with the connector response. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, Any] | None
|
dict[str, Any] | None: The connector operation result. |
Raises:
| Type | Description |
|---|---|
ConnectorException
|
If the connector request fails. |
post_question_draft
async
post_question_draft(input: PostQuestionDraftInput | Mapping[str, Any], *, timeout: Optional[float] = None, headers: Optional[Mapping[str, str]] = None, client_request_id: Optional[str] = None, response_hook: Optional[ConnectorResponseHook] = None) -> dict[str, Any] | None
Create a question draft
Creates a new question draft. The draft is not yet searchable or answerable by others. After creation, publish the draft (via the publish endpoint) to trigger expert search, make the question discoverable, and allow other users to answer it. Providing the optional description helps experts understand the question better and increases the chances of getting high-quality answers.
Swagger operation ID: PostQuestionDraft_V3.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
input
|
PostQuestionDraftInput | Mapping[str, Any]
|
The request body. Mapping keys use serialized Swagger wire names. |
required |
timeout
|
Optional[float]
|
The request timeout in seconds. |
None
|
headers
|
Optional[Mapping[str, str]]
|
Additional HTTP request headers. |
None
|
client_request_id
|
Optional[str]
|
A caller-provided request identifier. |
None
|
response_hook
|
Optional[ConnectorResponseHook]
|
A callback invoked with the connector response. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, Any] | None
|
dict[str, Any] | None: The connector operation result. |
Raises:
| Type | Description |
|---|---|
ConnectorException
|
If the connector request fails. |
publish_question_draft
async
publish_question_draft(question_id: int, *, timeout: Optional[float] = None, headers: Optional[Mapping[str, str]] = None, client_request_id: Optional[str] = None, response_hook: Optional[ConnectorResponseHook] = None) -> dict[str, Any] | None
Publish a question
Publishes a question draft. Publishing the question triggers expert search, makes the question discoverable, and allows other users to answer it. Questions are always published anonymously.
Swagger operation ID: PublishQuestionDraft_V3.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
question_id
|
int
|
The ID of the question draft to be published. |
required |
timeout
|
Optional[float]
|
The request timeout in seconds. |
None
|
headers
|
Optional[Mapping[str, str]]
|
Additional HTTP request headers. |
None
|
client_request_id
|
Optional[str]
|
A caller-provided request identifier. |
None
|
response_hook
|
Optional[ConnectorResponseHook]
|
A callback invoked with the connector response. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, Any] | None
|
dict[str, Any] | None: The connector operation result. |
Raises:
| Type | Description |
|---|---|
ConnectorException
|
If the connector request fails. |