/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */
/**
 * The general type of this service, specifying how and where it will be utilized.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "serviceType".
 */
export type ServiceTypeV4_0_0 = 'deployment' | 'authentication' | 'takeshape' | 'rest' | 'graphql' | 'openapi' | 'aws' | 'unknown';
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "nonNegativeInteger".
 */
export type NonNegativeIntegerV4_0_0 = number;
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "nonNegativeIntegerDefault0".
 */
export type NonNegativeIntegerDefault0V4_0_0 = NonNegativeIntegerV4_0_0;
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "stringArray".
 */
export type StringArrayV4_0_0 = string[];
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "simpleTypes".
 */
export type SimpleTypesV4_0_0 = 'array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string';
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "fieldMapping".
 */
export type FieldMappingV4_0_0 = MappingStringV4_0_0 | MappingStringV4_0_0[];
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "mappingString".
 */
export type MappingStringV4_0_0 = string;
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "args".
 */
export type ArgsV4_0_0 = string | ObjectSchemaV4_0_0;
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "objectSchema".
 */
export type ObjectSchemaV4_0_0 = PropertySchemaV4_0_0 & {
    type: 'object';
    properties: {
        [k: string]: PropertySchemaV4_0_0;
    };
};
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "resolver".
 */
export type ResolverV4_0_0 = BasicResolverV4_0_0 | ComposeResolverV4_0_0;
/**
 * A single resolver, can be composed with the ComposeResolver.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "basicResolver".
 */
export type BasicResolverV4_0_0 = UtilResolverV4_0_0 | TakeshapeResolverV4_0_0 | InternalTakeshapeResolverV4_0_0 | GraphqlResolverV4_0_0 | RestResolverV4_0_0 | AwsLambdaResolverV4_0_0;
/**
 * Name of the resolver function.
 */
export type UtilResolverNameV4_0_0 = 'debug:noop' | 'util:wrap';
/**
 * An object describing an operation to generate a parameter.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterOp".
 */
export type ParameterOpV4_0_0 = ParameterOpNestedV4_0_0 | ParameterOpValueV4_0_0 | ParameterOpMappingV4_0_0 | ParameterOpOpV4_0_0;
/**
 * A tuple with a string directive name, and options to pass to the directive
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "directiveConfigItem".
 */
export type DirectiveConfigItemV4_0_0 = [DirectiveNameV4_0_0, DirectiveOptionsV4_0_0];
export type DirectiveNameV4_0_0 = string;
/**
 * An array of individual directive config items to process in order
 *
 * This interface was referenced by `DirectiveMappingMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "directiveConfig".
 */
export type DirectiveConfigV4_0_0 = DirectiveConfigItemV4_0_0[];
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterOpList".
 */
export type ParameterOpListV4_0_0 = ParameterOpV4_0_0[];
/**
 * Maps a query's input args to the input expected by the service's endpoint.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "argsMapping".
 */
export type ArgsMappingV4_0_0 = DirectiveMappingMapV4_0_0 | DirectiveConfigV4_0_0;
/**
 * Maps a service endpoint's response results to the expected shape of the query's response.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "resultsMapping".
 */
export type ResultsMappingV4_0_0 = DirectiveMappingMapV4_0_0 | DirectiveConfigV4_0_0;
/**
 * Name of the resolver function.
 */
export type TakeshapeResolverNameV4_0_0 = 'takeshape:get' | 'takeshape:list' | 'takeshape:create' | 'takeshape:update' | 'takeshape:delete' | 'takeshape:duplicate' | 'takeshape:find' | 'takeshape:queryApiIndex' | 'takeshape:search';
/**
 * Name of the resolver function.
 */
export type InternalTakeshapeResolverNameV4_0_0 = 'takeshape:getRelationship' | 'takeshape:taxonomySuggest';
/**
 * Name of the resolver function.
 */
export type GraphqlResolverNameV4_0_0 = 'graphql:query' | 'graphql:mutation';
/**
 * Name of the resolver function.
 */
export type RestResolverNameV4_0_0 = 'rest:get' | 'rest:head' | 'rest:post' | 'rest:put' | 'rest:patch' | 'rest:delete';
/**
 * A tuple with a string key and a directive config to evaluate
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "directiveMappingArrayItem".
 */
export type DirectiveMappingArrayItemV4_0_0 = [string, DirectiveConfigV4_0_0];
/**
 * An array of key / value or directive config tuples
 */
export type SearchParamsMappingV4_0_0 = DirectiveMappingArrayItemV4_0_0[];
/**
 * Name of the resolver function.
 */
export type AwsLambdaResolverNameV4_0_0 = 'awsLambda:invoke';
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "schemaArray".
 */
export type SchemaArrayV4_0_0 = PropertySchemaV4_0_0[];
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "returnShapeArraySchema".
 */
export type ReturnShapeArraySchemaV4_0_0 = PropertySchemaV4_0_0 & {
    type: 'array';
    items: RefSchemaV4_0_0 | {
        type: 'boolean' | 'integer' | 'number' | 'string';
        [k: string]: any;
    };
};
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "allOfSchema".
 */
export type AllOfSchemaV4_0_0 = PropertySchemaV4_0_0 & {
    allOf: (RefSchemaV4_0_0 | RefSchemaLegacyV4_0_0 | ObjectSchemaV4_0_0)[];
};
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "oneOfSchema".
 */
export type OneOfSchemaV4_0_0 = PropertySchemaV4_0_0 & {
    oneOf: (RefSchemaV4_0_0 | RefSchemaLegacyV4_0_0 | ObjectSchemaV4_0_0)[];
};
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "shapeSchema".
 */
export type ShapeSchemaV4_0_0 = ShapeSchemaAllOfV4_0_0 | ShapeSchemaOneOfV4_0_0 | ShapeSchemaEnumV4_0_0 | ObjectSchemaV4_0_0;
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "returnShape".
 */
export type ReturnShapeV4_0_0 = string | ReturnShapeArraySchemaV4_0_0;
/**
 * Options to be passed to the serialization routine.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeOptions".
 *
 * This interface was referenced by `undefined`'s JSON-Schema definition
 * via the `patternProperty` "^[^\n\r]*$".
 */
export type ParameterSerializeOptionsV4_0_0 = ParameterSerializeStyleOptionsV4_0_0 | ParameterSerializeContentOptionsV4_0_0;
/**
 * An array of key / value or directive config tuples
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "directiveMappingArray".
 */
export type DirectiveMappingArrayV4_0_0 = DirectiveMappingArrayItemV4_0_0[];
/**
 * An array of key / value or directive config tuples
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "searchParamsMapping".
 */
export type SearchParamsMappingV4_0_01 = DirectiveMappingArrayItemV4_0_0[];
export type ModelTypeV4_0_0 = 'single' | 'multiple' | 'taxonomy';
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "shapeWithObjectSchema".
 */
export type ShapeWithObjectSchemaV4_0_0 = ShapeJSONV4_0_0 & {
    schema: ObjectSchemaV4_0_0;
};
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "searchParamsAuthentication".
 */
export type SearchParamsAuthenticationV4_0_0 = {
    name: string;
    value: string;
}[];
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "serviceAuthentication".
 */
export type ServiceAuthenticationV4_0_0 = OAuth2AuthenticationV4_0_0 | OAuth2BearerAuthenticationV4_0_0 | BearerAuthenticationV4_0_0 | BasicAuthenticationV4_0_0 | SearchParamsAuthenticationV4_0_0 | AWSAuthenticationV4_0_0 | CustomAuthenticationV4_0_0;
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "anyServiceConfig".
 */
export type AnyServiceConfigV4_0_0 = ServiceConfigJSONV4_0_0 | ServiceConfigV4_0_0;
/**
 * machine-readable slug
 */
export type NameV4_0_0 = string;
/**
 * Human-readable id for use in the UI
 */
export type TitleV4_0_0 = string;
export type DescriptionV4_0_0 = string;
/**
 * Hex color code
 */
export type ColorV4_0_0 = string;
/**
 * Value to indicate whether items in the state should be returned in list queries
 */
export type LiveV4_0_0 = boolean;
/**
 * machine-readable id
 */
export type KeyV4_0_0 = string;
/**
 * Human-readable id for use in the UI
 */
export type WorkflowNameV4_0_0 = string;
export type StepsV4_0_0 = WorkflowStepV4_0_0[];
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "layerType".
 */
export type LayerTypeV4_0_0 = 'service' | 'pattern';
export interface ProjectSchemaJSONV4_0_0 {
    $schema?: string;
    /**
     * This is the revision number of your schema. Every time your project schema is updated, this value should be incremented.
     */
    version: number;
    /**
     * The version of the TakeShape API your project is using. We increase the version as we make breaking changes to the API endpoints.
     */
    apiVersion: string;
    /**
     * The version of the schema format your project is using. We increase the version as we make breaking changes to the schema format.
     */
    schemaVersion: '4.0.0';
    /**
     * The ID of the TakeShape project this schema belongs to.
     */
    projectId: string;
    /**
     * The ID of the TakeShape user who created the schema.
     */
    author?: string;
    /**
     * The date the schema was created
     */
    created: string;
    /**
     * The date the schema was last updated
     */
    updated: string;
    deactivated?: number;
    /**
     * The locale that should be preferred when creating new Shape items. This must be an entry in the locales array.
     */
    defaultLocale: string;
    locales: string[];
    layers: (string | LayerConfigV4_0_0)[];
    dataKey: string;
    services?: ServiceMapJSONV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "layerConfig".
 */
export interface LayerConfigV4_0_0 {
    id: string;
    visibility?: string[];
    namespace?: string;
    dependencies?: {
        /**
         * This interface was referenced by `undefined`'s JSON-Schema definition
         * via the `patternProperty` "[0-9A-Za-z_-]+".
         */
        [k: string]: string;
    };
    variables?: {
        /**
         * This interface was referenced by `undefined`'s JSON-Schema definition
         * via the `patternProperty` "[0-9A-Za-z_-]+".
         */
        [k: string]: string | number | boolean;
    };
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "storedServiceMap".
 */
export interface ServiceMapJSONV4_0_0 {
    [k: string]: ServiceConfigJSONV4_0_0;
}
/**
 * This interface was referenced by `ServiceMapJSONV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "storedServiceConfig".
 */
export interface ServiceConfigJSONV4_0_0 {
    /**
     * Human-readable name for this service.
     */
    title: string;
    /**
     * The service provider id.
     */
    provider: string;
    /**
     * A namespace to use for the imported types tied to this service.
     */
    namespace?: string;
    serviceType: ServiceTypeV4_0_0;
    authenticationType: 'oauth2' | 'basic' | 'bearer' | 'searchParams' | 'oauth2Bearer' | 'custom' | 'aws' | 'none' | 'unknown';
    authentication?: string;
    webhookId?: string;
    /**
     * Configuration options passed to and handled by the provider.
     */
    options?: {
        [k: string]: any;
    };
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "propertySchema".
 */
export interface PropertySchemaV4_0_0 {
    $ref?: string;
    $comment?: string;
    title?: string;
    description?: string;
    default?: any;
    readOnly?: boolean;
    examples?: any[];
    multipleOf?: number;
    maximum?: number;
    exclusiveMaximum?: number;
    minimum?: number;
    exclusiveMinimum?: number;
    maxLength?: NonNegativeIntegerV4_0_0;
    minLength?: NonNegativeIntegerDefault0V4_0_0;
    pattern?: string;
    items?: PropertySchemaV4_0_0;
    maxItems?: NonNegativeIntegerV4_0_0;
    minItems?: NonNegativeIntegerDefault0V4_0_0;
    uniqueItems?: boolean;
    maxProperties?: NonNegativeIntegerV4_0_0;
    minProperties?: NonNegativeIntegerDefault0V4_0_0;
    required?: StringArrayV4_0_0;
    properties?: {
        [k: string]: PropertySchemaV4_0_0;
    };
    const?: any;
    enum?: any[];
    type?: SimpleTypesV4_0_0;
    format?: string;
    allOf?: SchemaArrayV4_0_0;
    oneOf?: SchemaArrayV4_0_0;
    '@relationship'?: RelationshipV4_0_0;
    '@syncLocaleStructure'?: boolean;
    '@sensitive'?: boolean;
    '@l10n'?: boolean;
    '@key'?: string;
    '@workflow'?: string;
    '@mapping'?: FieldMappingV4_0_0;
    '@tag'?: string;
    '@tags'?: string[];
    '@deprecationReason'?: string;
    '@user'?: boolean;
    '@args'?: ArgsV4_0_0;
    '@resolver'?: ResolverV4_0_0;
    '@ref'?: string;
    '@derivedFrom'?: string;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "relationship".
 */
export interface RelationshipV4_0_0 {
    shapeIds: string[];
    type?: string;
    relatedName?: string;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "utilResolver".
 */
export interface UtilResolverV4_0_0 {
    if?: string;
    id?: string;
    name: UtilResolverNameV4_0_0;
    /**
     * Configuration for a service to use with this resolver.
     */
    service: string;
    options?: UtilResolverOptionsV4_0_0;
    args?: ParameterConfigForJsonV4_0_0;
    results?: ParameterConfigForJsonV4_0_0;
    argsMapping?: ArgsMappingV4_0_0;
    resultsMapping?: ResultsMappingV4_0_0;
}
export interface UtilResolverOptionsV4_0_0 {
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterConfigForJson".
 */
export interface ParameterConfigForJsonV4_0_0 {
    ops: ParameterOpListV4_0_0;
}
/**
 * An object describing an operation to generate a parameter, using a nested OpList.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterOpNested".
 */
export interface ParameterOpNestedV4_0_0 {
    /**
     * A path to the parameter for this operation.
     */
    path: string;
    /**
     * A mode for this parameter's operation.
     */
    op?: 'set' | 'concat' | 'extend' | 'remove';
    ops: ParameterOpListV4_0_0;
}
/**
 * An object describing an operation to generate a parameter using a value.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterOpValue".
 */
export interface ParameterOpValueV4_0_0 {
    /**
     * A path to the parameter for this operation.
     */
    path: string;
    /**
     * A mode for this parameter's operation.
     */
    op?: 'set' | 'concat' | 'extend' | 'remove';
    /**
     * A value to set directly at this path.
     */
    value: number | string | boolean | {
        [k: string]: any;
    } | any[] | null;
}
/**
 * An object describing an operation to generate a parameter using a mapping.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterOpMapping".
 */
export interface ParameterOpMappingV4_0_0 {
    /**
     * A path to the parameter for this operation.
     */
    path: string;
    /**
     * A mode for this parameter's operation.
     */
    op?: 'set' | 'concat' | 'extend' | 'remove';
    /**
     * Either a valid JSONPath or a directive pipeline to evaluate against the query context.
     */
    mapping: string | DirectiveConfigV4_0_0;
}
export interface DirectiveOptionsV4_0_0 {
    [k: string]: any;
}
/**
 * An object describing an operation to generate a parameter using a mapping.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterOpOp".
 */
export interface ParameterOpOpV4_0_0 {
    /**
     * A path to the parameter for this operation.
     */
    path: string;
    /**
     * A mode for this parameter's operation.
     */
    op: 'set' | 'concat' | 'extend' | 'remove';
}
/**
 * An map of object keys / key paths to directive configs
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "directiveMappingMap".
 */
export interface DirectiveMappingMapV4_0_0 {
    [k: string]: DirectiveConfigV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "takeshapeResolver".
 */
export interface TakeshapeResolverV4_0_0 {
    if?: string;
    id?: string;
    name: TakeshapeResolverNameV4_0_0;
    /**
     * Internal service identifier.
     */
    service: string;
    options?: TakeshapeResolverOptionsV4_0_0;
    argsMapping?: ArgsMappingV4_0_0;
    resultsMapping?: ResultsMappingV4_0_0;
    /**
     * A Shape name for the resolver to use.
     */
    shapeName: string;
    args?: ParameterConfigForJsonV4_0_0;
    results?: ParameterConfigForJsonV4_0_0;
}
export interface TakeshapeResolverOptionsV4_0_0 {
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "internalTakeshapeResolver".
 */
export interface InternalTakeshapeResolverV4_0_0 {
    if?: string;
    id?: string;
    name: InternalTakeshapeResolverNameV4_0_0;
    /**
     * Internal service identifier.
     */
    service: 'takeshape:local';
    /**
     * An optional Shape name for the resolver.
     */
    shapeName?: string;
    args?: ParameterConfigForJsonV4_0_0;
    results?: ParameterConfigForJsonV4_0_0;
    argsMapping?: ArgsMappingV4_0_0;
    resultsMapping?: ResultsMappingV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "graphqlResolver".
 */
export interface GraphqlResolverV4_0_0 {
    if?: string;
    id?: string;
    name: GraphqlResolverNameV4_0_0;
    /**
     * Configuration for a service to use with this resolver.
     */
    service: string;
    argsMapping?: ArgsMappingV4_0_0;
    resultsMapping?: ResultsMappingV4_0_0;
    options?: GraphqlResolverOptionsV4_0_0;
    /**
     * A fieldname to use in queries.
     */
    fieldName: string;
    headers?: ParameterConfigForHeadersV4_0_0;
    searchParams?: ParameterConfigForSearchParamsV4_0_0;
    args?: ParameterConfigForJsonV4_0_0;
    results?: ParameterConfigForJsonV4_0_0;
}
export interface GraphqlResolverOptionsV4_0_0 {
    selectionSet?: string;
    unboxParentSelectionSet?: boolean;
    ignoreErrors?: boolean;
    skipWhenMissingArgs?: boolean;
    ttl?: number;
    timeout?: number;
    retry?: number | {
        [k: string]: any;
    };
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterConfigForHeaders".
 */
export interface ParameterConfigForHeadersV4_0_0 {
    ops: ParameterOpListV4_0_0;
    serialize?: ParameterSerializeConfigForHeadersV4_0_0;
}
/**
 * Top-level paths to use headers serialization options for.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeConfigForHeaders".
 */
export interface ParameterSerializeConfigForHeadersV4_0_0 {
    defaults?: ParameterSerializeStyleOptionsForHeadersV4_0_0 | ParameterSerializeContentOptionsV4_0_0;
    paths?: {
        /**
         * This interface was referenced by `undefined`'s JSON-Schema definition
         * via the `patternProperty` "^[^\n\r]*$".
         */
        [k: string]: ParameterSerializeStyleOptionsForHeadersV4_0_0 | ParameterSerializeContentOptionsV4_0_0;
    };
}
/**
 * Options to be passed to the serialization routine.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeStyleOptionsForHeaders".
 */
export interface ParameterSerializeStyleOptionsForHeadersV4_0_0 {
    style: 'simple' | 'none';
    explode?: boolean;
}
/**
 * Options to be passed to the serialization routine.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeContentOptions".
 */
export interface ParameterSerializeContentOptionsV4_0_0 {
    contentType: 'application/json' | 'application/x-www-form-urlencoded' | 'text/csv';
    /**
     * The allowReserved keyword specifies whether the reserved characters :/?#[]@!$&'()*+,;= in parameter values are allowed to be sent as they are.
     */
    allowReserved?: boolean;
    skipEncoding?: boolean;
    /**
     * Options to be passed directly to the content serializer library. Valid options depend upon your contentType.
     */
    options?: {
        [k: string]: any;
    };
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterConfigForSearchParams".
 */
export interface ParameterConfigForSearchParamsV4_0_0 {
    ops: ParameterOpListV4_0_0;
    serialize?: ParameterSerializeConfigForSearchParamsV4_0_0;
}
/**
 * Top-level paths to use search params serialization options for.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeConfigForSearchParams".
 */
export interface ParameterSerializeConfigForSearchParamsV4_0_0 {
    defaults?: ParameterSerializeStyleOptionsForSearchParamsV4_0_0 | ParameterSerializeContentOptionsV4_0_0;
    paths?: {
        /**
         * This interface was referenced by `undefined`'s JSON-Schema definition
         * via the `patternProperty` "^[^\n\r]*$".
         */
        [k: string]: ParameterSerializeStyleOptionsForSearchParamsV4_0_0 | ParameterSerializeContentOptionsV4_0_0;
    };
}
/**
 * Options to be passed to the serialization routine.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeStyleOptionsForSearchParams".
 */
export interface ParameterSerializeStyleOptionsForSearchParamsV4_0_0 {
    style: 'form' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject' | 'none';
    explode?: boolean;
    allowEmptyValue?: boolean;
    /**
     * The allowReserved keyword specifies whether the reserved characters :/?#[]@!$&'()*+,;= in parameter values are allowed to be sent as they are.
     */
    allowReserved?: boolean;
    skipEncoding?: boolean;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "restResolver".
 */
export interface RestResolverV4_0_0 {
    if?: string;
    id?: string;
    name: RestResolverNameV4_0_0;
    /**
     * Configuration for a service to use with this resolver.
     */
    service: string;
    argsMapping?: ArgsMappingV4_0_0;
    searchParamsMapping?: SearchParamsMappingV4_0_0;
    resultsMapping?: ResultsMappingV4_0_0;
    options?: RestResolverOptionsV4_0_0;
    body?: ParameterConfigForBodyV4_0_0;
    form?: ParameterConfigForSearchParamsV4_0_0;
    headers?: ParameterConfigForHeadersV4_0_0;
    json?: ParameterConfigForJsonV4_0_0;
    /**
     * Mapping and serialization configuration for the path, or a simple string.
     */
    path: ParameterConfigForPathParamsV4_0_0 | string;
    searchParams?: ParameterConfigForSearchParamsV4_0_0;
    args?: ParameterConfigForJsonV4_0_0;
    results?: ParameterConfigForJsonV4_0_0;
}
export interface RestResolverOptionsV4_0_0 {
    trailingSlash?: boolean;
    ttl?: number;
    timeout?: number;
    retry?: number | {
        [k: string]: any;
    };
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterConfigForBody".
 */
export interface ParameterConfigForBodyV4_0_0 {
    ops: ParameterOpListV4_0_0;
    serialize?: ParameterSerializeConfigForBodyV4_0_0;
}
/**
 * Top-level paths to use serialization options for.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeConfigForBody".
 */
export interface ParameterSerializeConfigForBodyV4_0_0 {
    content?: ParameterSerializeContentOptionsV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterConfigForPathParams".
 */
export interface ParameterConfigForPathParamsV4_0_0 {
    ops: ParameterOpListV4_0_0;
    serialize: ParameterSerializeConfigForPathParamsV4_0_0;
}
/**
 * Top-level paths to use path params serialization options for.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeConfigForPathParams".
 */
export interface ParameterSerializeConfigForPathParamsV4_0_0 {
    /**
     * For generating the path using tokens frpm the ParameterOps, e.g., '/products/{productId}'
     */
    template: string;
    defaults?: ParameterSerializeStyleOptionsForPathParamsV4_0_0 | ParameterSerializeContentOptionsV4_0_0;
    paths?: {
        /**
         * This interface was referenced by `undefined`'s JSON-Schema definition
         * via the `patternProperty` "^[^\n\r]*$".
         */
        [k: string]: ParameterSerializeStyleOptionsForPathParamsV4_0_0 | ParameterSerializeContentOptionsV4_0_0;
    };
}
/**
 * Options to be passed to the serialization routine.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeStyleOptionsForPathParams".
 */
export interface ParameterSerializeStyleOptionsForPathParamsV4_0_0 {
    style: 'simple' | 'label' | 'matrix' | 'none';
    explode?: boolean;
    allowEmptyValue?: boolean;
    /**
     * The allowReserved keyword specifies whether the reserved characters :/?#[]@!$&'()*+,;= in parameter values are allowed to be sent as they are.
     */
    allowReserved?: boolean;
    skipEncoding?: boolean;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "awsLambdaResolver".
 */
export interface AwsLambdaResolverV4_0_0 {
    if?: string;
    id?: string;
    name: AwsLambdaResolverNameV4_0_0;
    /**
     * Configuration for a service to use with this resolver.
     */
    service: string;
    options?: AwsLambdaResolverOptionsV4_0_0;
    payload?: ParameterConfigForJsonV4_0_0;
    /**
     * Mapping configuration for the FunctionName.
     */
    functionName: string | ParameterConfigForAwsLambdaV4_0_0;
    clientContext?: ParameterConfigForJsonV4_0_0;
    args?: ParameterConfigForJsonV4_0_0;
    results?: ParameterConfigForJsonV4_0_0;
    argsMapping?: ArgsMappingV4_0_0;
    searchParamsMapping?: SearchParamsMappingV4_0_0;
    resultsMapping?: ResultsMappingV4_0_0;
}
export interface AwsLambdaResolverOptionsV4_0_0 {
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterConfigForAwsLambda".
 */
export interface ParameterConfigForAwsLambdaV4_0_0 {
    ops: ParameterOpListV4_0_0;
    serialize: ParameterSerializeConfigForPathParamsV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "composeResolver".
 */
export interface ComposeResolverV4_0_0 {
    compose: BasicResolverV4_0_0[];
    resultsMapping?: DirectiveMappingMapV4_0_0 | DirectiveConfigV4_0_0;
    results?: ParameterConfigForJsonV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "refSchema".
 */
export interface RefSchemaV4_0_0 {
    '@ref': string;
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "refSchemaLegacy".
 */
export interface RefSchemaLegacyV4_0_0 {
    $ref: string;
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "shapeSchemaEnum".
 */
export interface ShapeSchemaEnumV4_0_0 {
    enum: string[];
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "shapeSchemaAllOf".
 */
export interface ShapeSchemaAllOfV4_0_0 {
    allOf: (RefSchemaV4_0_0 | RefSchemaLegacyV4_0_0 | ObjectSchemaV4_0_0)[];
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "shapeSchemaOneOf".
 */
export interface ShapeSchemaOneOfV4_0_0 {
    oneOf: (RefSchemaV4_0_0 | RefSchemaLegacyV4_0_0 | ObjectSchemaV4_0_0)[];
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "queryMap".
 */
export interface QueryMapV4_0_0 {
    [k: string]: QueryJSONV4_0_0;
}
/**
 * This interface was referenced by `QueryMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "^[0-9A-Za-z_]+$".
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "query".
 */
export interface QueryJSONV4_0_0 {
    args?: ArgsV4_0_0;
    resolver: ResolverV4_0_0;
    shape: ReturnShapeV4_0_0;
    /**
     * Provides more detail about what the query or mutation is for. This will be displayed in the automatically-generated GraphQL API docs.
     */
    description?: string;
    [k: string]: any;
}
/**
 * All possible options for the more specific ParameterSerializeStyleOptions types.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeStyleOptions".
 */
export interface ParameterSerializeStyleOptionsV4_0_0 {
    style: 'simple' | 'label' | 'matrix' | 'form' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject' | 'none';
    explode?: boolean;
    allowEmptyValue?: boolean;
    /**
     * The allowReserved keyword specifies whether the reserved characters :/?#[]@!$&'()*+,;= in parameter values are allowed to be sent as they are.
     */
    allowReserved?: boolean;
    skipEncoding?: boolean;
}
/**
 * All possible options for the more specific ParameterSerializeConfig types.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterSerializeConfig".
 */
export interface ParameterSerializeConfigV4_0_0 {
    content?: ParameterSerializeContentOptionsV4_0_0;
    defaults?: ParameterSerializeOptionsV4_0_0;
    paths?: {
        [k: string]: ParameterSerializeOptionsV4_0_0;
    };
}
/**
 * All possible options for the more specific ParameterConfig types.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "parameterConfig".
 */
export interface ParameterConfigV4_0_0 {
    ops: ParameterOpListV4_0_0;
    serialize?: ParameterSerializeConfigV4_0_0;
}
/**
 * A Shape is a schema object for structuring and storing data from one or more sources, including the TakeShape data store and connected services
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "shape".
 *
 * This interface was referenced by `ShapeMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "^[0-9A-Za-z_]+$".
 */
export interface ShapeJSONV4_0_0 {
    /**
     * The machine-readable id for a Shape which should never change. When using TakeShape's built-in database to store Shape data, this value is used  database as a stable "table name" and changing it will result in orphaning that data.
     */
    id?: string;
    /**
     * The human-readable name for a Shape for use in a UI.
     */
    title?: string;
    description?: string;
    /**
     * Specifying a model type allows Shape data to be stored in TakeShape's built-in database
     */
    model?: {
        type: ModelTypeV4_0_0;
    };
    workflow?: string;
    override?: 'extend' | 'replace';
    schema: ShapeSchemaV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "shapeMap".
 */
export interface ShapeMapV4_0_0 {
    [k: string]: ShapeJSONV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "formMap".
 */
export interface FormMapV4_0_0 {
    [k: string]: FormsConfigV4_0_0;
}
/**
 * This interface was referenced by `FormMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "formsConfig".
 */
export interface FormsConfigV4_0_0 {
    default: FormConfigV4_0_0;
    [k: string]: FormConfigV4_0_0;
}
/**
 * This interface was referenced by `FormsConfigV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 *
 * This interface was referenced by `undefined`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "formConfig".
 */
export interface FormConfigV4_0_0 {
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "indexedShapeMap".
 */
export interface IndexedShapeMapV4_0_0 {
    [k: string]: IndexedShapeConfigV4_0_0;
}
/**
 * This interface was referenced by `IndexedShapeMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "indexedShapeConfig".
 */
export interface IndexedShapeConfigV4_0_0 {
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "formScalarConfig".
 */
export interface FormScalarConfigV4_0_0 {
    widget: string;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "formObjectConfig".
 */
export interface FormObjectConfigV4_0_0 {
    widget?: string;
    order?: string[];
    properties?: {
        [k: string]: FormConfigV4_0_0;
    };
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "formArrayConfig".
 */
export interface FormArrayConfigV4_0_0 {
    widget: string;
    items: FormConfigV4_0_0;
}
/**
 * For use with a custom auth handler on a service provider.
 *
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "customAuthentication".
 */
export interface CustomAuthenticationV4_0_0 {
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "bearerAuthentication".
 */
export interface BearerAuthenticationV4_0_0 {
    token?: string;
    prefix?: string;
    header?: string;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "oauth2BearerAuthentication".
 */
export interface OAuth2BearerAuthenticationV4_0_0 {
    token?: string;
    prefix?: string;
    header?: string;
    scope?: string;
    expiresAt?: string;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "basicAuthentication".
 */
export interface BasicAuthenticationV4_0_0 {
    username?: string;
    password?: string;
    useIso8859?: boolean;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "oauth2Authentication".
 */
export interface OAuth2AuthenticationV4_0_0 {
    grantType?: 'authorizationCode' | 'clientCredentials';
    authorizationUrl?: string;
    accessTokenUrl?: string;
    clientId?: string;
    clientSecret?: string;
    scope?: string;
    usePkce?: boolean;
    redirectUrl?: string;
    headerPrefix?: string;
    audience?: string;
    resource?: string;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "awsAuthentication".
 */
export interface AWSAuthenticationV4_0_0 {
    awsAccessKeyId?: string;
    awsSecretAccessKey?: string;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "serviceConfig".
 */
export interface ServiceConfigV4_0_0 {
    /**
     * Machine-readable identifier, should typically be the same as the property name on the services object.
     */
    id: string;
    /**
     * Human-readable name for this service.
     */
    title: string;
    /**
     * The service provider id.
     */
    provider: string;
    /**
     * A namespace to use for the imported types tied to this service.
     */
    namespace?: string;
    serviceType: ServiceTypeV4_0_0;
    authenticationType: 'oauth2' | 'basic' | 'bearer' | 'searchParams' | 'oauth2Bearer' | 'custom' | 'aws' | 'none' | 'unknown';
    authentication?: ServiceAuthenticationV4_0_0;
    webhookId?: string;
    /**
     * Configuration options passed to and handled by the provider.
     */
    options?: {
        [k: string]: any;
    };
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "workflowStep".
 */
export interface WorkflowStepV4_0_0 {
    name: NameV4_0_0;
    title: TitleV4_0_0;
    description?: DescriptionV4_0_0;
    color: ColorV4_0_0;
    live: LiveV4_0_0;
    key: KeyV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "workflow".
 *
 * This interface was referenced by `WorkflowMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 */
export interface WorkflowV4_0_0 {
    /**
     * machine-readable id
     */
    name: string;
    title: WorkflowNameV4_0_0;
    steps: StepsV4_0_0;
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "workflowMap".
 */
export interface WorkflowMapV4_0_0 {
    [k: string]: WorkflowV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "variable".
 *
 * This interface was referenced by `VariableMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 */
export interface VariableV4_0_0 {
    description?: string;
    default?: string | number | boolean;
    required?: boolean;
    type?: 'string' | 'number' | 'boolean';
    constraints?: {
        [k: string]: any;
    };
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "dependency".
 *
 * This interface was referenced by `DependencyMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 */
export interface DependencyV4_0_0 {
    description?: string;
    required?: boolean;
    type?: 'service' | 'layer';
    constraints?: {
        [k: string]: any;
    };
    [k: string]: any;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "variableMap".
 */
export interface VariableMapV4_0_0 {
    [k: string]: VariableV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "dependencyMap".
 */
export interface DependencyMapV4_0_0 {
    [k: string]: DependencyV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "layerSchema".
 *
 * This interface was referenced by `LayerMapV4_0_0`'s JSON-Schema definition
 * via the `patternProperty` "[0-9A-Za-z_-]+".
 */
export interface LayerSchemaV4_0_0 {
    layerId: string;
    layerType?: LayerTypeV4_0_0;
    /**
     * The version of the schema format your project is using. We increase the version as we make breaking changes to the schema format.
     */
    schemaVersion: '4.0.0';
    variables?: VariableMapV4_0_0;
    dependencies?: DependencyMapV4_0_0;
    queries?: QueryMapV4_0_0;
    mutations?: QueryMapV4_0_0;
    shapes?: ShapeMapV4_0_0;
    indexedShapes?: IndexedShapeMapV4_0_0;
    forms?: FormMapV4_0_0;
    workflows?: WorkflowMapV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "layerMap".
 */
export interface LayerMapV4_0_0 {
    [k: string]: LayerSchemaV4_0_0;
}
/**
 * This interface was referenced by `ProjectSchemaJSONV4_0_0`'s JSON-Schema
 * via the `definition` "flattenedSchema".
 */
export interface FlattenedSchemaV4_0_0 {
    $schema?: string;
    /**
     * This is the revision number of your schema. Every time your project schema is updated, this value should be incremented.
     */
    version: number;
    /**
     * The version of the schema format your project is using. We increase the version as we make breaking changes to the schema format.
     */
    schemaVersion: '4.0.0';
    /**
     * The ID of the TakeShape project this schema belongs to.
     */
    projectId: string;
    /**
     * The ID of the TakeShape user who created the schema.
     */
    author?: string;
    /**
     * The date the schema was created
     */
    created: string;
    /**
     * The date the schema was last updated
     */
    updated: string;
    deactivated?: number;
    /**
     * The locale that should be preferred when creating new Shape items. This must be an entry in the locales array.
     */
    defaultLocale: string;
    locales: string[];
    serviceLayers?: LayerMapV4_0_0;
    queries: QueryMapV4_0_0;
    mutations: QueryMapV4_0_0;
    shapes: ShapeMapV4_0_0;
    indexedShapes?: IndexedShapeMapV4_0_0;
    forms?: FormMapV4_0_0;
    workflows: WorkflowMapV4_0_0;
    dataKey: string;
    services?: ServiceMapJSONV4_0_0;
}
