Skip to content

key_results

key_results

create_key_result async

create_key_result(
    auth: DomoAuth,
    name: str | None = None,
    owner_id: int | None = None,
    payload: dict | None = None,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> ResponseGetData

Create a new key result.

Parameters:

Name Type Description Default
auth DomoAuth

Authentication object for API requests

required
name str | None

Name for the new key result

None
owner_id int | None

Owner ID for the new key result

None
payload dict | None

Pre-built {"keyResult": {...}} payload (overrides name/owner_id, see generate_create_key_result_body for the full set of supported fields)

None
return_raw bool

Return raw response without processing

False
context RouteContext | None

RouteContext for request configuration

None

Returns:

Type Description
ResponseGetData

ResponseGetData object containing the created key result

Raises:

Type Description
KeyResult_CRUD_Error

If key result creation fails

Source code in src/crew_dcs/routes/objectives/key_results.py
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
@gd.route_function
@log_call(
    level_name="route",
    config=LogDecoratorConfig(result_processor=ResponseGetDataProcessor()),
)
async def create_key_result(
    auth: DomoAuth,
    name: str | None = None,
    owner_id: int | None = None,
    payload: dict | None = None,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> rgd.ResponseGetData:
    """Create a new key result.

    Args:
        auth: Authentication object for API requests
        name: Name for the new key result
        owner_id: Owner ID for the new key result
        payload: Pre-built `{"keyResult": {...}}` payload (overrides
            name/owner_id, see generate_create_key_result_body for the full
            set of supported fields)
        return_raw: Return raw response without processing
        context: RouteContext for request configuration

    Returns:
        ResponseGetData object containing the created key result

    Raises:
        KeyResult_CRUD_Error: If key result creation fails
    """
    context = RouteContext.build_context(context=context, **context_kwargs)

    payload = payload or generate_create_key_result_body(name=name, owner_id=owner_id)

    url = f"https://{auth.domo_instance}.domo.com/api/social/v1/objectives/key-results"

    res = await gd.get_data(
        auth=auth, url=url, method="POST", body=payload, context=context
    )

    if return_raw:
        return res
    if not res.is_success:
        raise KeyResult_CRUD_Error(operation="create", key_result_id=name, res=res)
    return res

delete_key_result async

delete_key_result(
    auth: DomoAuth,
    key_result_id: int | str,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> ResponseGetData

Delete a key result.

Parameters:

Name Type Description Default
auth DomoAuth

Authentication object for API requests

required
key_result_id int | str

ID of the key result to delete

required
return_raw bool

Return raw response without processing

False
context RouteContext | None

RouteContext for request configuration

None

Returns:

Type Description
ResponseGetData

ResponseGetData object confirming deletion

Raises:

Type Description
KeyResult_CRUD_Error

If key result deletion fails

Source code in src/crew_dcs/routes/objectives/key_results.py
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
@gd.route_function
@log_call(
    level_name="route",
    config=LogDecoratorConfig(result_processor=ResponseGetDataProcessor()),
)
async def delete_key_result(
    auth: DomoAuth,
    key_result_id: int | str,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> rgd.ResponseGetData:
    """Delete a key result.

    Args:
        auth: Authentication object for API requests
        key_result_id: ID of the key result to delete
        return_raw: Return raw response without processing
        context: RouteContext for request configuration

    Returns:
        ResponseGetData object confirming deletion

    Raises:
        KeyResult_CRUD_Error: If key result deletion fails
    """
    context = RouteContext.build_context(context=context, **context_kwargs)

    url = f"https://{auth.domo_instance}.domo.com/api/social/v1/objectives/key-results/{key_result_id}"

    res = await gd.get_data(auth=auth, url=url, method="DELETE", context=context)

    if return_raw:
        return res
    if not res.is_success:
        raise KeyResult_CRUD_Error(
            operation="delete", key_result_id=str(key_result_id), res=res
        )
    return res

generate_create_key_result_body

generate_create_key_result_body(
    name: str,
    owner_id: int,
    owner_type: str = "USER",
    owners: list[dict] | None = None,
    state: str = "OPEN",
    description: str | None = None,
    alert_id: int | None = None,
    resource_id: str | None = None,
    resource_type: str | None = None,
    data_achievement_score: float = 0.0,
    measurement: str = "",
    start_value: float = 0,
    current_value: float = 0,
    target_value: float = 0,
    status: str = "NOT_STARTED",
    color_value: str = "#F34847",
    operator: str = "GREATER_THAN_EQUALS_TO",
) -> dict

Generate payload for key result creation.

Returns the full {"keyResult": {...}} envelope expected by the create key result endpoint.

Source code in src/crew_dcs/routes/objectives/key_results.py
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
def generate_create_key_result_body(
    name: str,
    owner_id: int,
    owner_type: str = "USER",
    owners: list[dict] | None = None,
    state: str = "OPEN",
    description: str | None = None,
    alert_id: int | None = None,
    resource_id: str | None = None,
    resource_type: str | None = None,
    data_achievement_score: float = 0.0,
    measurement: str = "",
    start_value: float = 0,
    current_value: float = 0,
    target_value: float = 0,
    status: str = "NOT_STARTED",
    color_value: str = "#F34847",
    operator: str = "GREATER_THAN_EQUALS_TO",
) -> dict:
    """Generate payload for key result creation.

    Returns the full `{"keyResult": {...}}` envelope expected by the create
    key result endpoint.
    """
    return {
        "keyResult": {
            "state": state,
            "ownerId": owner_id,
            "ownerType": owner_type,
            "owners": owners or [{"ownerId": owner_id, "ownerType": owner_type}],
            "alertId": alert_id,
            "resourceId": resource_id,
            "resourceType": resource_type,
            "name": name,
            "description": description,
            "dataAchievementScore": data_achievement_score,
            "measurement": measurement,
            "startValue": start_value,
            "currentValue": current_value,
            "targetValue": target_value,
            "status": status,
            "colorValue": color_value,
            "operator": operator,
        }
    }

get_key_result_chart async

get_key_result_chart(
    auth: DomoAuth,
    key_result_id: int | str,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> ResponseGetData

Get chart data for a key result.

Parameters:

Name Type Description Default
auth DomoAuth

Authentication object for API requests

required
key_result_id int | str

ID of the key result

required
return_raw bool

Return raw response without processing

False
context RouteContext | None

RouteContext for request configuration

None

Returns:

Type Description
ResponseGetData

ResponseGetData object containing key result chart data

Raises:

Type Description
KeyResult_GET_Error

If chart retrieval fails

Source code in src/crew_dcs/routes/objectives/key_results.py
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@gd.route_function
@log_call(
    level_name="route",
    config=LogDecoratorConfig(result_processor=ResponseGetDataProcessor()),
)
async def get_key_result_chart(
    auth: DomoAuth,
    key_result_id: int | str,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> rgd.ResponseGetData:
    """Get chart data for a key result.

    Args:
        auth: Authentication object for API requests
        key_result_id: ID of the key result
        return_raw: Return raw response without processing
        context: RouteContext for request configuration

    Returns:
        ResponseGetData object containing key result chart data

    Raises:
        KeyResult_GET_Error: If chart retrieval fails
    """
    context = RouteContext.build_context(context=context, **context_kwargs)

    url = f"https://{auth.domo_instance}.domo.com/api/social/v1/objectives/key-results/{key_result_id}/chart"

    res = await gd.get_data(auth=auth, url=url, method="GET", context=context)

    if return_raw:
        return res
    if not res.is_success:
        raise KeyResult_GET_Error(key_result_id=str(key_result_id), res=res)
    return res

get_key_result_values async

get_key_result_values(
    auth: DomoAuth,
    key_result_id: int | str,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> ResponseGetData

Get historical values for a key result.

Parameters:

Name Type Description Default
auth DomoAuth

Authentication object for API requests

required
key_result_id int | str

ID of the key result

required
return_raw bool

Return raw response without processing

False
context RouteContext | None

RouteContext for request configuration

None

Returns:

Type Description
ResponseGetData

ResponseGetData object containing key result values

Raises:

Type Description
KeyResult_GET_Error

If value retrieval fails

Source code in src/crew_dcs/routes/objectives/key_results.py
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
@gd.route_function
@log_call(
    level_name="route",
    config=LogDecoratorConfig(result_processor=ResponseGetDataProcessor()),
)
async def get_key_result_values(
    auth: DomoAuth,
    key_result_id: int | str,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> rgd.ResponseGetData:
    """Get historical values for a key result.

    Args:
        auth: Authentication object for API requests
        key_result_id: ID of the key result
        return_raw: Return raw response without processing
        context: RouteContext for request configuration

    Returns:
        ResponseGetData object containing key result values

    Raises:
        KeyResult_GET_Error: If value retrieval fails
    """
    context = RouteContext.build_context(context=context, **context_kwargs)

    url = f"https://{auth.domo_instance}.domo.com/api/social/v1/objectives/key-results/{key_result_id}/values"

    res = await gd.get_data(auth=auth, url=url, method="GET", context=context)

    if return_raw:
        return res
    if not res.is_success:
        raise KeyResult_GET_Error(key_result_id=str(key_result_id), res=res)
    return res

update_key_result async

update_key_result(
    auth: DomoAuth,
    key_result_id: int | str,
    payload: dict,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> ResponseGetData

Update an existing key result.

Parameters:

Name Type Description Default
auth DomoAuth

Authentication object for API requests

required
key_result_id int | str

ID of the key result to update

required
payload dict

Updated key result payload

required
return_raw bool

Return raw response without processing

False
context RouteContext | None

RouteContext for request configuration

None

Returns:

Type Description
ResponseGetData

ResponseGetData object containing the updated key result

Raises:

Type Description
KeyResult_CRUD_Error

If key result update fails

Source code in src/crew_dcs/routes/objectives/key_results.py
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
@gd.route_function
@log_call(
    level_name="route",
    config=LogDecoratorConfig(result_processor=ResponseGetDataProcessor()),
)
async def update_key_result(
    auth: DomoAuth,
    key_result_id: int | str,
    payload: dict,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> rgd.ResponseGetData:
    """Update an existing key result.

    Args:
        auth: Authentication object for API requests
        key_result_id: ID of the key result to update
        payload: Updated key result payload
        return_raw: Return raw response without processing
        context: RouteContext for request configuration

    Returns:
        ResponseGetData object containing the updated key result

    Raises:
        KeyResult_CRUD_Error: If key result update fails
    """
    context = RouteContext.build_context(context=context, **context_kwargs)

    url = f"https://{auth.domo_instance}.domo.com/api/social/v1/objectives/key-results/{key_result_id}"

    res = await gd.get_data(
        auth=auth, url=url, method="PUT", body=payload, context=context
    )

    if return_raw:
        return res
    if not res.is_success:
        raise KeyResult_CRUD_Error(
            operation="update", key_result_id=str(key_result_id), res=res
        )
    return res

update_key_result_tags async

update_key_result_tags(
    auth: DomoAuth,
    key_result_id: int | str,
    tag_ids: list[int],
    period_id: int | None = None,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> ResponseGetData

Replace the tags assigned to a key result.

Parameters:

Name Type Description Default
auth DomoAuth

Authentication object for API requests

required
key_result_id int | str

ID of the key result to tag

required
tag_ids list[int]

List of tag IDs to assign to the key result, e.g. [1]

required
period_id int | None

Optional period ID query parameter

None
return_raw bool

Return raw response without processing

False
context RouteContext | None

RouteContext for request configuration

None

Returns:

Type Description
ResponseGetData

ResponseGetData object confirming the tag update

Raises:

Type Description
KeyResult_CRUD_Error

If tag update fails

Source code in src/crew_dcs/routes/objectives/key_results.py
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
@gd.route_function
@log_call(
    level_name="route",
    config=LogDecoratorConfig(result_processor=ResponseGetDataProcessor()),
)
async def update_key_result_tags(
    auth: DomoAuth,
    key_result_id: int | str,
    tag_ids: list[int],
    period_id: int | None = None,
    return_raw: bool = False,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> rgd.ResponseGetData:
    """Replace the tags assigned to a key result.

    Args:
        auth: Authentication object for API requests
        key_result_id: ID of the key result to tag
        tag_ids: List of tag IDs to assign to the key result, e.g. [1]
        period_id: Optional period ID query parameter
        return_raw: Return raw response without processing
        context: RouteContext for request configuration

    Returns:
        ResponseGetData object confirming the tag update

    Raises:
        KeyResult_CRUD_Error: If tag update fails
    """
    context = RouteContext.build_context(context=context, **context_kwargs)

    url = f"https://{auth.domo_instance}.domo.com/api/social/v1/objectives/key-results/{key_result_id}/tags"
    params = {}
    if period_id is not None:
        params["periodId"] = period_id

    res = await gd.get_data(
        auth=auth,
        url=url,
        method="PUT",
        body=tag_ids,
        params=params,
        context=context,
    )

    if return_raw:
        return res
    if not res.is_success:
        raise KeyResult_CRUD_Error(
            operation="update tags", key_result_id=str(key_result_id), res=res
        )
    return res