/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
import { powerPathCourseMasteryCreateExternalTestOut } from "../../funcs/powerPathCourseMasteryCreateExternalTestOut.js";
import * as operations from "../../models/operations/index.js";
import { formatResult } from "../tools.js";
const args = {
    request: operations.CreateExternalTestOutRequest$inboundSchema.optional(),
};
export const tool$powerPathCourseMasteryCreateExternalTestOut = {
    name: "power-path-course-mastery-create-external-test-out",
    description: `Create an External TestOut

Creates or updates a ComponentResource to act as a TestOut lesson in a course.
This allows integrating with external test-taking platforms (like Edulastic) for content delivery.

The endpoint creates or updates (if they already exist) the following entities:
- A CourseComponent for the course to hold the TestOut lesson
- A Resource with lessonType = "test-out" and the external service details as metadata
- A ComponentResource acting as the TestOut lesson

A test assignment is mandatory in order to obtain access credentials for this test on the external platform, as well as to obtain the IDs necessary for fetching test results later on:
- For test assignments, use the "makeExternalTestAssignment" endpoint.
- For test results retrieval, use the "importExternalTestAssignmentResults" endpoint.

This request fails if:
- The course provided does not exist
- An existing TestOut lesson in the course has a different toolProvider than the one provided (need to perform an update to the Resource first, altering the "toolProvider", before trying again)

A 'Lesson' in this context is a ComponentResource object which has a Resource object with lessonType = "test-out" associated with it.
`,
    args,
    tool: async (client, args, ctx) => {
        const [result, apiCall] = await powerPathCourseMasteryCreateExternalTestOut(client, args.request, { fetchOptions: { signal: ctx.signal } }).$inspect();
        if (!result.ok) {
            return {
                content: [{ type: "text", text: result.error.message }],
                isError: true,
            };
        }
        const value = result.value;
        return formatResult(value, apiCall);
    },
};
//# sourceMappingURL=powerPathCourseMasteryCreateExternalTestOut.js.map