Skip to main content

Uniformed Interchangeable Achievement Format Standard v1.1

UIGF-orgStandard DocumentAbout 2 min

Uniformed Interchangeable Achievement Format Standard v1.1

Uniformed Interchangeable Achievement Format standard (UIAF) v1.1 Current

Usage of UIAF Statement Requirement

Application must declare support of UIAF data format only after supporting of both import and export features, and provide link to UIGF-Orgopen in new window in the associated page.

Including only importing feature reduces the interchangeability of user data, and puts the data in a risk that user can not control, which is not in line with intention of UIGF-Org.

Manifesto

With more third-party working on Genshin Impact's achievement recognition, export and record.

Based on experience we had in UIGF, we (list in alphabetical order)

Make standard here together to strengthen the achievement data exchange-ability between each Genshin-related App.

Precautions

Time

All time in this standard are based on UTC+8 time zone

Json Schema

Mind the Field Types

Devs are strongly urged to respect the data types of each property in the schema. Using incorrect types could result in errors when parsing JSON files by other tools developed in strong typing programming languages, leading to data transfer failures.

To avoid such issues, we recommend designing dedicated structs for the UIAF format or utilizing methods like JsonNumberHandling.WriteAsString. Additionally, it is advisable to design relevant unit tests to ensure consistency between imports and exports.

We also provide the UIAF Json Schema Verify Toolopen in new window to help you to verify validation of Json files.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "info": {
      "type": "object",
      "properties": {
        "export_app": {
          "type": "string",
          "description": "Export application name"
        },
        "export_app_version": {
          "type": "string",
          "description": "Export application version"
        },
        "uiaf_version": {
          "type": "string",
          "description": "UIAF version applied; Used to prevent application not working when UIGF have breaking update",
          "pattern": "v\\d+.\\d+"
        },
        "export_timestamp": {
          "type": "number",
          "description": "Export time in UNIX timestamp"
        }
      },
      "required": [
        "export_app",
        "uiaf_version"
      ],
      "description": "Include basic information defined by export application"
    },
    "list": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Achievement ID"
          },
          "current": {
            "type": "number",
            "description": "Process"
          },
          "status": {
            "type": "number",
            "description": "Finished status",
            "enum": [
              0,
              1,
              2,
              3
            ],
            "enumDesc": "ACHIEVEMENT_INVALID = 0; ACHIEVEMENT_UNFINISHED = 1; ACHIEVEMENT_FINISHED = 2;ACHIEVEMENT_POINT_TAKEN = 3;"
          },
          "timestamp": {
            "type": "number",
            "description": "Finished time"
          }
        },
        "required": [
          "id",
          "current",
          "status",
          "timestamp"
        ],
        "description": "To represent an achievement"
      },
      "description": "Include finished or unfinished achievements"
    }
  },
  "required": [
    "info",
    "list"
  ]
}

info

We recognize the following fields:

FieldValueNotes
export_timestampExport time in UNIX timestamp
export_app_versionExport application version
uiaf_versionUIAF version applied; Used to prevent application not working when UIGF have breaking update

uiaf_version

Valid value:

ValueNoteCompatibility
v1.0First public official versionv1.0
v1.1Introduced status field in achievement to indicate completion of achievementv1.1

export_app

Application haven't made export feature is marked as -

Export Applicationexport_app value
EmptyEmpty

achievement

id

The achievements of the Genshin Impact have a built-in ID inside the game. For OCR scanning export software, after obtaining the external manifestation of the achievement (such as: displaying text), correspond internal ID can also be achieved.

Import/Export software should handle conversion between ID and text themselves

Achievement metadata can be found in GenshinData

timestamp

  • For successfully recognized value, set the time to UNIX timestamp (in seconds precision)

  • For failed recognized value, set the time to 9999-12-31 23:59:59 (UNIX timestamp 253402271999 in seconds precision)

current

  • For successfully recognized value, set it to current process value
    • For example if 30/40 is recongnized, set current to 30
    • You can always get final finished value in Genshin's data

*For failed recognized value, set current to 0