// This file is auto-generated by @hey-api/openapi-ts

export const $App = {
    properties: {
        title: {
            type: 'string',
            title: 'Title',
            default: 'Tree Trail'
        }
    },
    additionalProperties: false,
    type: 'object',
    title: 'App'
} as const;

export const $BaseMapStyles = {
    properties: {
        embedded: {
            items: {
                type: 'string'
            },
            type: 'array',
            title: 'Embedded'
        },
        external: {
            additionalProperties: {
                type: 'string'
            },
            type: 'object',
            title: 'External'
        }
    },
    type: 'object',
    required: ['embedded', 'external'],
    title: 'BaseMapStyles'
} as const;

export const $Body_addTree_tree_post = {
    properties: {
        plantekey_id: {
            type: 'string',
            title: 'Plantekey Id'
        },
        picture: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Picture'
        },
        trail_ids: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Trail Ids'
        },
        lng: {
            type: 'string',
            title: 'Lng'
        },
        lat: {
            type: 'string',
            title: 'Lat'
        },
        uuid1: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Uuid1'
        },
        details: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Details'
        }
    },
    type: 'object',
    required: ['plantekey_id', 'lng', 'lat'],
    title: 'Body_addTree_tree_post'
} as const;

export const $Body_login_for_access_token_token_post = {
    properties: {
        grant_type: {
            anyOf: [
                {
                    type: 'string',
                    pattern: 'password'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Grant Type'
        },
        username: {
            type: 'string',
            title: 'Username'
        },
        password: {
            type: 'string',
            title: 'Password'
        },
        scope: {
            type: 'string',
            title: 'Scope',
            default: ''
        },
        client_id: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Client Id'
        },
        client_secret: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Client Secret'
        }
    },
    type: 'object',
    required: ['username', 'password'],
    title: 'Body_login_for_access_token_token_post'
} as const;

export const $Body_upload_trail_photo_trail_photo__id___file_name__put = {
    properties: {
        file: {
            anyOf: [
                {
                    type: 'string',
                    format: 'binary'
                },
                {
                    type: 'null'
                }
            ],
            title: 'File'
        }
    },
    type: 'object',
    title: 'Body_upload_trail_photo_trail_photo__id___file_name__put'
} as const;

export const $Body_upload_tree_photo_tree_photo__id___file_name__put = {
    properties: {
        file: {
            anyOf: [
                {
                    type: 'string',
                    format: 'binary'
                },
                {
                    type: 'null'
                }
            ],
            title: 'File'
        }
    },
    type: 'object',
    title: 'Body_upload_tree_photo_tree_photo__id___file_name__put'
} as const;

export const $Body_upload_upload__type___field___id__post = {
    properties: {
        file: {
            type: 'string',
            format: 'binary',
            title: 'File'
        }
    },
    type: 'object',
    required: ['file'],
    title: 'Body_upload_upload__type___field___id__post'
} as const;

export const $Bootstrap = {
    properties: {
        client: {
            '$ref': '#/components/schemas/VersionedComponent'
        },
        server: {
            '$ref': '#/components/schemas/VersionedComponent'
        },
        app: {
            '$ref': '#/components/schemas/App'
        },
        user: {
            anyOf: [
                {
                    '$ref': '#/components/schemas/UserWithRoles'
                },
                {
                    type: 'null'
                }
            ]
        },
        map: {
            '$ref': '#/components/schemas/Map'
        },
        baseMapStyles: {
            '$ref': '#/components/schemas/BaseMapStyles'
        }
    },
    type: 'object',
    required: ['client', 'server', 'app', 'user', 'map', 'baseMapStyles'],
    title: 'Bootstrap'
} as const;

export const $HTTPValidationError = {
    properties: {
        detail: {
            items: {
                '$ref': '#/components/schemas/ValidationError'
            },
            type: 'array',
            title: 'Detail'
        }
    },
    type: 'object',
    title: 'HTTPValidationError'
} as const;

export const $Map = {
    properties: {
        zoom: {
            type: 'number',
            title: 'Zoom',
            default: 14
        },
        pitch: {
            type: 'number',
            title: 'Pitch',
            default: 0
        },
        lat: {
            type: 'number',
            title: 'Lat',
            default: 12
        },
        lng: {
            type: 'number',
            title: 'Lng',
            default: 79.8106
        },
        bearing: {
            type: 'number',
            title: 'Bearing',
            default: 0
        },
        background: {
            type: 'string',
            title: 'Background',
            default: 'osm'
        }
    },
    additionalProperties: false,
    type: 'object',
    title: 'Map'
} as const;

export const $MapStyle = {
    properties: {
        id: {
            type: 'integer',
            title: 'Id'
        },
        layer: {
            type: 'string',
            title: 'Layer'
        },
        paint: {
            anyOf: [
                {
                    type: 'object'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Paint'
        },
        layout: {
            anyOf: [
                {
                    type: 'object'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Layout'
        }
    },
    type: 'object',
    required: ['id', 'layer', 'paint', 'layout'],
    title: 'MapStyle'
} as const;

export const $POI = {
    properties: {
        id: {
            type: 'integer',
            title: 'Id'
        },
        name: {
            type: 'string',
            title: 'Name'
        },
        description: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Description'
        },
        create_date: {
            type: 'string',
            format: 'date-time',
            title: 'Create Date'
        },
        geom: {
            type: 'string',
            title: 'Geom'
        },
        photo: {
            type: 'string',
            title: 'Photo'
        },
        type: {
            type: 'string',
            title: 'Type'
        },
        data: {
            type: 'object',
            title: 'Data'
        }
    },
    type: 'object',
    required: ['id', 'name', 'geom', 'photo', 'type'],
    title: 'POI'
} as const;

export const $Role = {
    properties: {
        name: {
            type: 'string',
            title: 'Name'
        }
    },
    type: 'object',
    required: ['name'],
    title: 'Role'
} as const;

export const $Token = {
    properties: {
        access_token: {
            type: 'string',
            title: 'Access Token'
        },
        token_type: {
            type: 'string',
            title: 'Token Type'
        }
    },
    type: 'object',
    required: ['access_token', 'token_type'],
    title: 'Token'
} as const;

export const $TreeTrail = {
    properties: {
        tree_id: {
            anyOf: [
                {
                    type: 'string',
                    format: 'uuid'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Tree Id'
        },
        trail_id: {
            anyOf: [
                {
                    type: 'integer'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Trail Id'
        }
    },
    type: 'object',
    title: 'TreeTrail'
} as const;

export const $UserWithRoles = {
    properties: {
        username: {
            type: 'string',
            title: 'Username'
        },
        full_name: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Full Name'
        },
        email: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Email'
        },
        roles: {
            items: {
                '$ref': '#/components/schemas/Role'
            },
            type: 'array',
            title: 'Roles'
        }
    },
    type: 'object',
    required: ['username', 'full_name', 'email', 'roles'],
    title: 'UserWithRoles'
} as const;

export const $ValidationError = {
    properties: {
        loc: {
            items: {
                anyOf: [
                    {
                        type: 'string'
                    },
                    {
                        type: 'integer'
                    }
                ]
            },
            type: 'array',
            title: 'Location'
        },
        msg: {
            type: 'string',
            title: 'Message'
        },
        type: {
            type: 'string',
            title: 'Error Type'
        }
    },
    type: 'object',
    required: ['loc', 'msg', 'type'],
    title: 'ValidationError'
} as const;

export const $VersionedComponent = {
    properties: {
        version: {
            type: 'string',
            title: 'Version'
        }
    },
    type: 'object',
    required: ['version'],
    title: 'VersionedComponent'
} as const;

export const $Zone = {
    properties: {
        id: {
            type: 'integer',
            title: 'Id'
        },
        name: {
            type: 'string',
            title: 'Name'
        },
        description: {
            type: 'string',
            title: 'Description'
        },
        create_date: {
            type: 'string',
            format: 'date-time',
            title: 'Create Date'
        },
        geom: {
            type: 'string',
            title: 'Geom'
        },
        photo: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Photo'
        },
        type: {
            type: 'string',
            title: 'Type'
        },
        data: {
            anyOf: [
                {
                    type: 'object'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Data'
        },
        viewable_role_id: {
            anyOf: [
                {
                    type: 'string'
                },
                {
                    type: 'null'
                }
            ],
            title: 'Viewable Role Id'
        }
    },
    type: 'object',
    required: ['id', 'name', 'description', 'geom', 'photo', 'type', 'viewable_role_id'],
    title: 'Zone'
} as const;