UNPKG

@docusign/iam-sdk

Version:

Developer-friendly & type-safe Typescript SDK specifically catered to leverage *@docusign/iam-sdk* API.

209 lines (193 loc) 6.58 kB
/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { IamClientCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; import { RequestOptions } from "../lib/sdks.js"; import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; import { pathToFunc } from "../lib/url.js"; import * as components from "../models/components/index.js"; import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError, } from "../models/errors/httpclienterrors.js"; import { IamClientError } from "../models/errors/iamclienterror.js"; import * as errors from "../models/errors/index.js"; import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; import * as operations from "../models/operations/index.js"; import { APICall, APIPromise } from "../types/async.js"; import { Result } from "../types/fp.js"; /** * Returns the roles the caller can assign to workspace users * * @remarks * This operation returns roles that are assignable to users in the workspace based on the caller's role in the workspace. Roles available include Manage (internal) and Participate (external). Participate is the default role. * * Users within the account are considered "Internal" and may be assigned any role. Users outside the account are considered "External" and may only be assigned "External" roles. * * Pagination is supported by passing `start_position` and `count` in the request. The response will include `resultSetSize`, `start_position`, and `end_position` which may be utilized for subsequent requests. * * If set, this operation will use {@link Security.accessToken} from the global security. */ export function workspacesWorkspacesGetWorkspaceAssignableRoles( client: IamClientCore, request: operations.GetWorkspaceAssignableRolesRequest, options?: RequestOptions, ): APIPromise< Result< components.GetWorkspaceAssignableRolesResponse, | errors.ErrorDetails | IamClientError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError > > { return new APIPromise($do( client, request, options, )); } async function $do( client: IamClientCore, request: operations.GetWorkspaceAssignableRolesRequest, options?: RequestOptions, ): Promise< [ Result< components.GetWorkspaceAssignableRolesResponse, | errors.ErrorDetails | IamClientError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError >, APICall, ] > { const parsed = safeParse( request, (value) => operations.GetWorkspaceAssignableRolesRequest$outboundSchema.parse(value), "Input validation failed", ); if (!parsed.ok) { return [parsed, { status: "invalid" }]; } const payload = parsed.value; const body = null; const pathParams = { accountId: encodeSimple("accountId", payload.accountId, { explode: false, charEncoding: "percent", }), workspaceId: encodeSimple("workspaceId", payload.workspaceId, { explode: false, charEncoding: "percent", }), }; const path = pathToFunc( "/v1/accounts/{accountId}/workspaces/{workspaceId}/assignable-roles", )(pathParams); const query = encodeFormQuery({ "count": payload.count, "filter": payload.filter, "start_position": payload.start_position, }); const headers = new Headers(compactMap({ Accept: "application/json", })); const secConfig = await extractSecurity(client._options.accessToken); const securityInput = secConfig == null ? {} : { accessToken: secConfig }; const requestSecurity = resolveGlobalSecurity(securityInput, [0]); const context = { options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getWorkspaceAssignableRoles", oAuth2Scopes: null, resolvedSecurity: requestSecurity, securitySource: client._options.accessToken, retryConfig: options?.retries || client._options.retryConfig || { strategy: "backoff", backoff: { initialInterval: 500, maxInterval: 5000, exponent: 1.5, maxElapsedTime: 30000, }, retryConnectionErrors: true, } || { strategy: "none" }, retryCodes: options?.retryCodes || ["5XX", "429"], }; const requestRes = client._createRequest(context, { security: requestSecurity, method: "GET", baseURL: options?.serverURL, path: path, headers: headers, query: query, body: body, userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { return [requestRes, { status: "invalid" }]; } const req = requestRes.value; const doResult = await client._do(req, { context, isErrorStatusCode: (statusCode: number) => matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); if (!doResult.ok) { return [doResult, { status: "request-error", request: req }]; } const response = doResult.value; const responseFields = { HttpMeta: { Response: response, Request: req }, }; const [result] = await M.match< components.GetWorkspaceAssignableRolesResponse, | errors.ErrorDetails | IamClientError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError >( M.json(200, components.GetWorkspaceAssignableRolesResponse$inboundSchema), M.jsonErr([400, 401], errors.ErrorDetails$inboundSchema), M.jsonErr(500, errors.ErrorDetails$inboundSchema), M.fail("4XX"), M.fail("5XX"), )(response, req, { extraFields: responseFields }); if (!result.ok) { return [result, { status: "complete", request: req, response }]; } return [result, { status: "complete", request: req, response }]; }