/*
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
*/
import { SDKCore } 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 {
ConnectionError,
InvalidRequestError,
RequestAbortedError,
RequestTimeoutError,
UnexpectedClientError,
} from "../models/errors/httpclienterrors.js";
import * as errors from "../models/errors/index.js";
import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
import { SDKBaseError } from "../models/errors/sdkbaseerror.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";
/**
* Get organization details
*
* @remarks
* Retrieve an organization's details, including the count of organization members broken down by role and organization settings such as AI training and MFA requirements.
This endpoint does not cost any credits to execute.
*/
export function accountManagementGetOrganizationDetails(
client: SDKCore,
request: operations.V3AccountmanagementOrgDetailsRequest,
options?: RequestOptions,
): APIPromise<
Result<
operations.V3AccountmanagementOrgDetailsResponse,
| errors.AuthenticationError
| errors.ErrorModel
| SDKBaseError
| ResponseValidationError
| ConnectionError
| RequestAbortedError
| RequestTimeoutError
| InvalidRequestError
| UnexpectedClientError
| SDKValidationError
>
> {
return new APIPromise($do(
client,
request,
options,
));
}
async function $do(
client: SDKCore,
request: operations.V3AccountmanagementOrgDetailsRequest,
options?: RequestOptions,
): Promise<
[
Result<
operations.V3AccountmanagementOrgDetailsResponse,
| errors.AuthenticationError
| errors.ErrorModel
| SDKBaseError
| ResponseValidationError
| ConnectionError
| RequestAbortedError
| RequestTimeoutError
| InvalidRequestError
| UnexpectedClientError
| SDKValidationError
>,
APICall,
]
> {
const parsed = safeParse(
request,
(value) =>
operations.V3AccountmanagementOrgDetailsRequest$outboundSchema.parse(
value,
),
"Input validation failed",
);
if (!parsed.ok) {
return [parsed, { status: "invalid" }];
}
const payload = parsed.value;
const body = null;
const pathParams = {
organization_id: encodeSimple("organization_id", payload.organization_id, {
explode: false,
charEncoding: "percent",
}),
};
const path = pathToFunc("/v3/accounts/organizations/{organization_id}")(
pathParams,
);
const query = encodeFormQuery({
"include_member_counts": payload.include_member_counts,
}, { explode: false });
const headers = new Headers(compactMap({
Accept: "application/json",
}));
const secConfig = await extractSecurity(client._options.personalAccessToken);
const securityInput = secConfig == null
? {}
: { personalAccessToken: secConfig };
const requestSecurity = resolveGlobalSecurity(securityInput);
const context = {
options: client._options,
baseURL: options?.serverURL ?? client._baseURL ?? "",
operationID: "v3-accountmanagement-org-details",
oAuth2Scopes: null,
resolvedSecurity: requestSecurity,
securitySource: client._options.personalAccessToken,
retryConfig: options?.retries
|| client._options.retryConfig
|| { strategy: "none" },
retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
};
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<
operations.V3AccountmanagementOrgDetailsResponse,
| errors.AuthenticationError
| errors.ErrorModel
| SDKBaseError
| ResponseValidationError
| ConnectionError
| RequestAbortedError
| RequestTimeoutError
| InvalidRequestError
| UnexpectedClientError
| SDKValidationError
>(
M.json(
200,
operations.V3AccountmanagementOrgDetailsResponse$inboundSchema,
{ hdrs: true, key: "Result" },
),
M.jsonErr(401, errors.AuthenticationError$inboundSchema),
M.jsonErr([403, 404, 422], errors.ErrorModel$inboundSchema, {
ctype: "application/problem+json",
}),
M.jsonErr(500, errors.ErrorModel$inboundSchema, {
ctype: "application/problem+json",
}),
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 }];
}