Grades Exchange API
Get a list of Grades Exchanges
Specify the page number (defaults to 0)
Specify the page_size (defaults to the maximum page size)
Exchanges response
GET /v2/grades/exchanges HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
Exchanges response
{
"data": [
{
"query": {
"type": "assignment_scores",
"conditions": [
{
"scope": "course",
"scope_by": "id",
"scope_id": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"created_at": "2025-08-15T13:04:14.476Z",
"updated_at": "2025-08-15T13:04:14.476Z"
}
},
"graded_after": "2025-08-15T13:04:14.476Z",
"assignment_ids": [
"text"
],
"summary_type": "final"
}
]
},
"metadata": {},
"state": "created",
"max_data_content_length": 1,
"error_count": 1,
"course_app_id": "text",
"batch_exchange_id": "text"
}
]
}
Create a Grades Exchange
Exchanges response
Bad Request
POST /v2/grades/exchanges HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 364
{
"query": {
"type": "assignment_scores",
"conditions": [
{
"scope": "course",
"scope_by": "id",
"scope_id": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"graded_after": "2025-08-15T13:04:14.476Z",
"assignment_ids": [
"text"
],
"summary_type": "final"
}
]
},
"metadata": {}
}
{
"data": null
}
Get the total count of Grades Exchanges (in scope of the actor credentials and the provided query parameters). Useful for determining the maximum page number of listExchanges (diving the returned number by the desired page size).
Exchanges' count
GET /v2/grades/exchanges/count HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
Exchanges' count
1
Get an Exchange
id of the Exchange to find
Exchanges response
Exchange not found
GET /v2/grades/exchanges/{id} HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"data": {
"query": {
"type": "assignment_scores",
"conditions": [
{
"scope": "course",
"scope_by": "id",
"scope_id": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"created_at": "2025-08-15T13:04:14.476Z",
"updated_at": "2025-08-15T13:04:14.476Z"
}
},
"graded_after": "2025-08-15T13:04:14.476Z",
"assignment_ids": [
"text"
],
"summary_type": "final"
}
]
},
"metadata": {},
"state": "created",
"max_data_content_length": 1,
"error_count": 1,
"course_app_id": "text",
"batch_exchange_id": "text"
}
}
Get a list of Grades Exchange Errors
id of the Exchange to list Errors
Specify the page number (defaults to 0)
Specify the page_size (defaults to the maximum page size)
Exchange Errors response
Exchange not found
GET /v2/grades/exchanges/{id}/errors HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2025-08-15T13:04:14.476Z",
"updated_at": "2025-08-15T13:04:14.476Z",
"code": "query_type_not_supported",
"message": "text",
"details": "text"
}
]
}
Create a list of Grades Exchange Errors
id of the Exchange to create Errors
Exchange Errors response
Bad Request
Exchange not found
POST /v2/grades/exchanges/{id}/errors HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 52
{
"code": "query_type_not_supported",
"details": "text"
}
{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2025-08-15T13:04:14.476Z",
"updated_at": "2025-08-15T13:04:14.476Z",
"code": "query_type_not_supported",
"message": "text",
"details": "text"
}
}
Create Grades data for an Exchange
id of the Exchange to create Data
Exchanges response
Bad Request
Exchange not found
POST /v2/grades/exchanges/{id}/data HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2383
{
"assignments": [
{
"error_code": "unspecified",
"sync_status": "unspecified",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"created_at": "2025-08-15T13:04:14.476Z",
"updated_at": "2025-08-15T13:04:14.476Z"
},
"$section": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"$category": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"$term": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"name": "text",
"description": "text",
"points_possible": 1,
"due_at": "2025-08-15T13:04:14.476Z",
"available_at": "2025-08-15T13:04:14.476Z",
"$ext": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"scores": [
{
"error_code": "unspecified",
"sync_status": "unspecified",
"$person": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"$grader": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"score": 1,
"grade": "text",
"late": true,
"missing": true,
"excused": true,
"submitted_at": "2025-08-15T13:04:14.476Z",
"preview_url": "text",
"$ext": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"comments": [
{
"created_at": "2025-08-15T13:04:14.476Z",
"comment": "text"
}
]
}
]
}
],
"summaries": [
{
"error_code": "unspecified",
"sync_status": "unspecified",
"$section": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"$person": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"$grader": {
"name": "text",
"$sys": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"app_id": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"summary_type": "final",
"score_type": "raw",
"score": 1,
"grade": "text",
"last_activity": "2025-08-15T13:04:14.476Z",
"$ext": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
],
"final": true
}
{
"data": null
}
Get the details artifact for a completed Exchange. The response is a .json.gz file but it is not decompressed by the client implicitly. If no details were produced (early failure), a 404 response will be returned.
id of the Exchange to get details
Exchange Details response
Exchange not found or the artifact is not available for it
GET /v2/grades/exchanges/{id}/artifacts/details HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
binary
Get the consumer logs artifact for a completed Exchange. The response is a .json.gz file but it is not decompressed by the client implicitly. If no logs were produced (nothing was sent to SIS), a 404 response will be returned.
id of the Exchange to get details
Exchange Details response
Exchange not found or the artifact is not available for it
GET /v2/grades/exchanges/{id}/artifacts/consumerlogs HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
binary
Returns details about the entity designated as this Grades Application's consumer.
Consumer Details response
Consumer is not configured
GET /v2/grades/consumer HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"id": "text",
"connector_type": "text",
"supported_exchange_query_type": "assignment_scores",
"summary_score_type": "final"
}
Resolves the provided Data Sync ID to an ID in the consumer's id space.
Data Sync ID to resolve
Resolved ID response
ID not found
GET /v2/grades/sections/{id}/resolve HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"consumerSourceId": "text"
}
Create a Batch Grades Exchange Error
id of the Batch Grades Exchange to create Error
Batch Exchange Error response
Bad Request
Exchange not found
POST /v2/grades/batch/{id}/error HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 28
{
"code": "integration_error"
}
{
"data": null
}
Create context data for a Batch Exchange
id of the Batch Exchange to create Context Data
Batch Exchanges Context Data response
Bad Request
Batch Exchange not found
POST /v2/grades/batch/{id}/data HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 23
{
"course_ids": [
"text"
]
}
{
"data": null
}
Specify the page number (defaults to 0)
Specify the page_size (defaults to the maximum page size)
Resolved ID response
ID not found
GET /v2/grades/schedules HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"data": [
null,
{
"type": "unspecified",
"last_executed_at": "2025-08-15T13:04:14.476Z",
"enabled": true,
"hour": 1,
"days": "text",
"metadata": {
"created": null,
"updated": null,
"scheduled": null
}
}
]
}
Update a grades schedule. Only the enabled
attribute may be updated.
id of the Schedule to update
No content
PATCH /v2/grades/schedules/{id} HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 16
{
"enabled": true
}
No content
No content
Enqueues a grade schedule for execution
id of the schedule to be executed
No content
Conflict, when running the schedule is rejected
When running the schedule is rejected due to rate limiting
POST /v2/grades/schedules/{id}/run HTTP/1.1
Host: api.us2.kimonocloud.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}
No content
Last updated
Was this helpful?