artemis_timatic 0.0.12 copy "artemis_timatic: ^0.0.12" to clipboard
artemis_timatic: ^0.0.12 copied to clipboard

A Dart/Flutter client for Timatic-powered APIs — handles authentication, token management, and provides strongly-typed methods to query locations, parameters, accepted values, and submit Timatic docum [...]

example/lib/main.dart

import 'dart:developer';
import 'dart:io';

import 'package:artemis_timatic/artemis_timatic.dart';

Future<void> main() async {
  // 1) Init client & API
  final client = TimaticClient(TimaticClientOptions(
    baseUrl: 'https://timatic.multidcs.com/api/v1', // ← CHANGE ME
  ));
  final api = TimaticApi(client);

  try {
    // 2) Login (stores bearer token inside client for future calls)
    final login = await api.login(
      LoginRequest(
        username: 'superadmin',             // ← CHANGE
        password: '11555FaraN#+',           // ← CHANGE
        app: {"aa":"asd"},
        device: {},
        network: {},
      ),
    );

    log('Logged in as: ${login.profile.username}');
    log('Token (short): ${client.authToken?.substring(0, 12)}…');

    final all = await api.preloadAll();

    log(all.locations.byType.length.toString());
    all.locations.byType.forEach((k,v){
      log("${k.name} -- ${v.length}");
    });
    all.params.byType.forEach((k,v){
      log("${k.name} -- ${v.length}");
    });
    //
    // // 3) Locations — by type (path param)
    // final airports = await api.listLocationsByType(
    //   LocationType.AIRPORT,
    //   name: 'Istanbul', // optional
    // );
    // log('Airports (sample): ${airports.take(3).map((a) => a.code3).toList()}');
    //
    // // 4) Locations — multi-type search (repeated query params)
    // final mixed = await api.listLocationsByType(
    //   LocationType.CITY,
    //   code: '',
    //   name: ""// optional
    // );
    // log('Search locations count: ${mixed.length}');
    //
    // // 5) Parameters (e.g., "pets")
    // final paramsEnv = await api.getParameters(codes: ['pets']);
    // for (final p in paramsEnv.parameters) {
    //   log('Parameter: ${p.name} (${p.code}) → '
    //       '${p.parameterValues.map((v) => v.code).take(3).join(", ")}…');
    // }
    //
    // // 6) Accepted values for a country/parameter with rule set filters
    // final accepted = await api.getAcceptedValues(
    //   countryCode: 'TR',                 // Turkiye
    //   parameter: 'docIssueCountry',      // from your API
    //   ruleSetTypes: ['REQTIX','INFTST','REQDOC'],
    // );
    // log('Accepted for ${accepted.locationName}: '
    //     '${accepted.ruleSets.first.parameter.parameterValues.length} values');
    //
    // // 7) Submit main Timatic document request
    // final docResp = await api.submitDocumentRequest(
    //   DocumentRequest(
    //     documentDetails: [
    //       DocumentDetail(
    //         documentCode: 'OFFICIALPASSPORT',
    //         documentExpiryDate: DateTime.now(),
    //         documentIssueCountry: Location(type: LocationType.COUNTRY, code3: 'AFG', name: 'AFG'),
    //       ),
    //     ],
    //     itineraryDetails: ItineraryDetails(
    //       segments: [
    //         ItinerarySegment(
    //           arrival: ItinPoint(
    //             date: DateTime.now(),
    //             time:DateTime.now(),
    //             dateTime:DateTime.now(),
    //             point: 'AAH',
    //             type: LocationType.AIRPORT,
    //           ),
    //           departure: ItinPoint(
    //             date: DateTime.now(),
    //             time: DateTime.now(),
    //             dateTime:DateTime.now(),
    //             point: 'IST',
    //             type: LocationType.AIRPORT,
    //           ),
    //           processingEntity: 'ABOMIS DOC CHECK',
    //         ),
    //       ],
    //     ),
    //     passengerDetails: PassengerDetails(
    //       birthDate: '2023-12-13',
    //       nationality: 'ALB',
    //     ),
    //   ),
    // );
    //
    // log('Txn: ${docResp.transactionId}  Eval: ${docResp.evaluationResult}');
    // for (final seg in docResp.segmentResults) {
    //   log('Segment → ${seg.arrival.point}→${seg.departure.point} '
    //       'Result: ${seg.segmentEvaluationResult}');
    //   for (final rs in seg.ruleSetEvaluations.take(3)) {
    //     log('  ${rs.ruleSetType.name} = ${rs.evaluationResult}');
    //     for (final dr in rs.documentResults) {
    //       for (final reg in dr.regulations) {
    //         // HTML text strings are in reg.texts[].text
    //         final hint = reg.texts?.isNotEmpty == true
    //             ? reg.texts!.first.text.replaceAll(RegExp(r'\s+'), ' ')
    //             : '';
    //         log('    - ${reg.name}: ${reg.evaluationResult}  ${hint.isEmpty ? "" : "…"}');
    //       }
    //     }
    //   }
    // }

  } catch (e, st) {
    // minimal error log
    stderr.writeln('❌ Error: $e');
    stderr.writeln(st);
  }
}
0
likes
115
points
59
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Dart/Flutter client for Timatic-powered APIs — handles authentication, token management, and provides strongly-typed methods to query locations, parameters, accepted values, and submit Timatic document requests. Built with dio and json_serializable for reliability and easy integration into mobile or web apps.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

dio, flutter, intl, json_annotation

More

Packages that depend on artemis_timatic