///
import {
ApiPayload,
CompassCreateCustomFieldDefinitionInput,
CompassCustomFieldDefinition,
CreateCustomFieldDefinition,
CustomFieldDefinitionPayload,
SdkError,
} from '@atlassian/forge-graphql-types';
import { CompassRequests } from '../../compass-requests';
import {
mapGqlErrors,
mapMutationErrors,
parsingResponseError,
} from '../../helpers';
declare module '../../compass-requests' {
interface CompassRequests {
/**
* Creates a new compass custom field definition.
*
* **Required Oauth Scopes:** `write:component:compass`
*/
createCustomFieldDefinition(
input: CompassCreateCustomFieldDefinitionInput,
): Promise>;
}
}
CompassRequests.prototype.createCustomFieldDefinition =
async function createCustomFieldDefinition(
this: CompassRequests,
input: CompassCreateCustomFieldDefinitionInput,
) {
let customFieldDefinition: CompassCustomFieldDefinition | null = null;
let errorsResp: Array = [];
try {
const resp = await this.api.requestGraph(
CreateCustomFieldDefinition,
{ input },
'createCustomFieldDefinition',
);
const { errors: gqlErrors, data } = await resp.json();
errorsResp = errorsResp.concat(mapGqlErrors(gqlErrors));
const mutationErrors = data.compass.createCustomFieldDefinition.errors;
customFieldDefinition =
data.compass.createCustomFieldDefinition.customFieldDefinition;
errorsResp = errorsResp.concat(mapMutationErrors(mutationErrors));
} catch (e) {
if (errorsResp.length === 0) {
errorsResp.push(parsingResponseError(e));
}
}
return {
errors: errorsResp,
success: errorsResp.length === 0,
data: { customFieldDefinition },
};
};