123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- package tgbotapi
- // PassportRequestInfoConfig allows you to request passport info
- type PassportRequestInfoConfig struct {
- BotID int `json:"bot_id"`
- Scope *PassportScope `json:"scope"`
- Nonce string `json:"nonce"`
- PublicKey string `json:"public_key"`
- }
- // PassportScopeElement supports using one or one of several elements.
- type PassportScopeElement interface {
- ScopeType() string
- }
- // PassportScope is the requested scopes of data.
- type PassportScope struct {
- V int `json:"v"`
- Data []PassportScopeElement `json:"data"`
- }
- // PassportScopeElementOneOfSeveral allows you to request any one of the
- // requested documents.
- type PassportScopeElementOneOfSeveral struct {
- }
- // ScopeType is the scope type.
- func (eo *PassportScopeElementOneOfSeveral) ScopeType() string {
- return "one_of"
- }
- // PassportScopeElementOne requires the specified element be provided.
- type PassportScopeElementOne struct {
- Type string `json:"type"` // One of “personal_details”, “passport”, “driver_license”, “identity_card”, “internal_passport”, “address”, “utility_bill”, “bank_statement”, “rental_agreement”, “passport_registration”, “temporary_registration”, “phone_number”, “email”
- Selfie bool `json:"selfie"`
- Translation bool `json:"translation"`
- NativeNames bool `json:"native_name"`
- }
- // ScopeType is the scope type.
- func (eo *PassportScopeElementOne) ScopeType() string {
- return "one"
- }
- type (
- // PassportData contains information about Telegram Passport data shared with
- // the bot by the user.
- PassportData struct {
- // Array with information about documents and other Telegram Passport
- // elements that was shared with the bot
- Data []EncryptedPassportElement `json:"data"`
- // Encrypted credentials required to decrypt the data
- Credentials *EncryptedCredentials `json:"credentials"`
- }
- // PassportFile represents a file uploaded to Telegram Passport. Currently, all
- // Telegram Passport files are in JPEG format when decrypted and don't exceed
- // 10MB.
- PassportFile struct {
- // Unique identifier for this file
- FileID string `json:"file_id"`
- FileUniqueID string `json:"file_unique_id"`
- // File size
- FileSize int `json:"file_size"`
- // Unix time when the file was uploaded
- FileDate int64 `json:"file_date"`
- }
- // EncryptedPassportElement contains information about documents or other
- // Telegram Passport elements shared with the bot by the user.
- EncryptedPassportElement struct {
- // Element type.
- Type string `json:"type"`
- // Base64-encoded encrypted Telegram Passport element data provided by
- // the user, available for "personal_details", "passport",
- // "driver_license", "identity_card", "identity_passport" and "address"
- // types. Can be decrypted and verified using the accompanying
- // EncryptedCredentials.
- Data string `json:"data,omitempty"`
- // User's verified phone number, available only for "phone_number" type
- PhoneNumber string `json:"phone_number,omitempty"`
- // User's verified email address, available only for "email" type
- Email string `json:"email,omitempty"`
- // Array of encrypted files with documents provided by the user,
- // available for "utility_bill", "bank_statement", "rental_agreement",
- // "passport_registration" and "temporary_registration" types. Files can
- // be decrypted and verified using the accompanying EncryptedCredentials.
- Files []PassportFile `json:"files,omitempty"`
- // Encrypted file with the front side of the document, provided by the
- // user. Available for "passport", "driver_license", "identity_card" and
- // "internal_passport". The file can be decrypted and verified using the
- // accompanying EncryptedCredentials.
- FrontSide *PassportFile `json:"front_side,omitempty"`
- // Encrypted file with the reverse side of the document, provided by the
- // user. Available for "driver_license" and "identity_card". The file can
- // be decrypted and verified using the accompanying EncryptedCredentials.
- ReverseSide *PassportFile `json:"reverse_side,omitempty"`
- // Encrypted file with the selfie of the user holding a document,
- // provided by the user; available for "passport", "driver_license",
- // "identity_card" and "internal_passport". The file can be decrypted
- // and verified using the accompanying EncryptedCredentials.
- Selfie *PassportFile `json:"selfie,omitempty"`
- }
- // EncryptedCredentials contains data required for decrypting and
- // authenticating EncryptedPassportElement. See the Telegram Passport
- // Documentation for a complete description of the data decryption and
- // authentication processes.
- EncryptedCredentials struct {
- // Base64-encoded encrypted JSON-serialized data with unique user's
- // payload, data hashes and secrets required for EncryptedPassportElement
- // decryption and authentication
- Data string `json:"data"`
- // Base64-encoded data hash for data authentication
- Hash string `json:"hash"`
- // Base64-encoded secret, encrypted with the bot's public RSA key,
- // required for data decryption
- Secret string `json:"secret"`
- }
- // PassportElementError represents an error in the Telegram Passport element
- // which was submitted that should be resolved by the user.
- PassportElementError interface{}
- // PassportElementErrorDataField represents an issue in one of the data
- // fields that was provided by the user. The error is considered resolved
- // when the field's value changes.
- PassportElementErrorDataField struct {
- // Error source, must be data
- Source string `json:"source"`
- // The section of the user's Telegram Passport which has the error, one
- // of "personal_details", "passport", "driver_license", "identity_card",
- // "internal_passport", "address"
- Type string `json:"type"`
- // Name of the data field which has the error
- FieldName string `json:"field_name"`
- // Base64-encoded data hash
- DataHash string `json:"data_hash"`
- // Error message
- Message string `json:"message"`
- }
- // PassportElementErrorFrontSide represents an issue with the front side of
- // a document. The error is considered resolved when the file with the front
- // side of the document changes.
- PassportElementErrorFrontSide struct {
- // Error source, must be front_side
- Source string `json:"source"`
- // The section of the user's Telegram Passport which has the issue, one
- // of "passport", "driver_license", "identity_card", "internal_passport"
- Type string `json:"type"`
- // Base64-encoded hash of the file with the front side of the document
- FileHash string `json:"file_hash"`
- // Error message
- Message string `json:"message"`
- }
- // PassportElementErrorReverseSide represents an issue with the reverse side
- // of a document. The error is considered resolved when the file with reverse
- // side of the document changes.
- PassportElementErrorReverseSide struct {
- // Error source, must be reverse_side
- Source string `json:"source"`
- // The section of the user's Telegram Passport which has the issue, one
- // of "driver_license", "identity_card"
- Type string `json:"type"`
- // Base64-encoded hash of the file with the reverse side of the document
- FileHash string `json:"file_hash"`
- // Error message
- Message string `json:"message"`
- }
- // PassportElementErrorSelfie represents an issue with the selfie with a
- // document. The error is considered resolved when the file with the selfie
- // changes.
- PassportElementErrorSelfie struct {
- // Error source, must be selfie
- Source string `json:"source"`
- // The section of the user's Telegram Passport which has the issue, one
- // of "passport", "driver_license", "identity_card", "internal_passport"
- Type string `json:"type"`
- // Base64-encoded hash of the file with the selfie
- FileHash string `json:"file_hash"`
- // Error message
- Message string `json:"message"`
- }
- // PassportElementErrorFile represents an issue with a document scan. The
- // error is considered resolved when the file with the document scan changes.
- PassportElementErrorFile struct {
- // Error source, must be a file
- Source string `json:"source"`
- // The section of the user's Telegram Passport which has the issue, one
- // of "utility_bill", "bank_statement", "rental_agreement",
- // "passport_registration", "temporary_registration"
- Type string `json:"type"`
- // Base64-encoded file hash
- FileHash string `json:"file_hash"`
- // Error message
- Message string `json:"message"`
- }
- // PassportElementErrorFiles represents an issue with a list of scans. The
- // error is considered resolved when the list of files containing the scans
- // changes.
- PassportElementErrorFiles struct {
- // Error source, must be files
- Source string `json:"source"`
- // The section of the user's Telegram Passport which has the issue, one
- // of "utility_bill", "bank_statement", "rental_agreement",
- // "passport_registration", "temporary_registration"
- Type string `json:"type"`
- // List of base64-encoded file hashes
- FileHashes []string `json:"file_hashes"`
- // Error message
- Message string `json:"message"`
- }
- // Credentials contains encrypted data.
- Credentials struct {
- Data SecureData `json:"secure_data"`
- // Nonce the same nonce given in the request
- Nonce string `json:"nonce"`
- }
- // SecureData is a map of the fields and their encrypted values.
- SecureData map[string]*SecureValue
- // PersonalDetails *SecureValue `json:"personal_details"`
- // Passport *SecureValue `json:"passport"`
- // InternalPassport *SecureValue `json:"internal_passport"`
- // DriverLicense *SecureValue `json:"driver_license"`
- // IdentityCard *SecureValue `json:"identity_card"`
- // Address *SecureValue `json:"address"`
- // UtilityBill *SecureValue `json:"utility_bill"`
- // BankStatement *SecureValue `json:"bank_statement"`
- // RentalAgreement *SecureValue `json:"rental_agreement"`
- // PassportRegistration *SecureValue `json:"passport_registration"`
- // TemporaryRegistration *SecureValue `json:"temporary_registration"`
- // SecureValue contains encrypted values for a SecureData item.
- SecureValue struct {
- Data *DataCredentials `json:"data"`
- FrontSide *FileCredentials `json:"front_side"`
- ReverseSide *FileCredentials `json:"reverse_side"`
- Selfie *FileCredentials `json:"selfie"`
- Translation []*FileCredentials `json:"translation"`
- Files []*FileCredentials `json:"files"`
- }
- // DataCredentials contains information required to decrypt data.
- DataCredentials struct {
- // DataHash checksum of encrypted data
- DataHash string `json:"data_hash"`
- // Secret of encrypted data
- Secret string `json:"secret"`
- }
- // FileCredentials contains information required to decrypt files.
- FileCredentials struct {
- // FileHash checksum of encrypted data
- FileHash string `json:"file_hash"`
- // Secret of encrypted data
- Secret string `json:"secret"`
- }
- // PersonalDetails https://core.telegram.org/passport#personaldetails
- PersonalDetails struct {
- FirstName string `json:"first_name"`
- LastName string `json:"last_name"`
- MiddleName string `json:"middle_name"`
- BirthDate string `json:"birth_date"`
- Gender string `json:"gender"`
- CountryCode string `json:"country_code"`
- ResidenceCountryCode string `json:"residence_country_code"`
- FirstNameNative string `json:"first_name_native"`
- LastNameNative string `json:"last_name_native"`
- MiddleNameNative string `json:"middle_name_native"`
- }
- // IDDocumentData https://core.telegram.org/passport#iddocumentdata
- IDDocumentData struct {
- DocumentNumber string `json:"document_no"`
- ExpiryDate string `json:"expiry_date"`
- }
- )
|