{
  "type": "record",
  "Aspect": {
    "name": "forms"
  },
  "name": "Forms",
  "namespace": "com.linkedin.pegasus2avro.common",
  "fields": [
    {
      "Searchable": {
        "/*/completedPrompts/*/id": {
          "fieldName": "incompleteFormsCompletedPromptIds",
          "fieldType": "KEYWORD"
        },
        "/*/completedPrompts/*/lastModified/time": {
          "fieldName": "incompleteFormsCompletedPromptResponseTimes",
          "fieldType": "DATETIME"
        },
        "/*/incompletePrompts/*/id": {
          "fieldName": "incompleteFormsIncompletePromptIds",
          "fieldType": "KEYWORD"
        },
        "/*/urn": {
          "fieldName": "incompleteForms",
          "fieldType": "URN"
        }
      },
      "type": {
        "type": "array",
        "items": {
          "type": "record",
          "name": "FormAssociation",
          "namespace": "com.linkedin.pegasus2avro.common",
          "fields": [
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "type": "string",
              "name": "urn",
              "doc": "Urn of the applied form",
              "Urn": "Urn"
            },
            {
              "type": {
                "type": "array",
                "items": {
                  "type": "record",
                  "name": "FormPromptAssociation",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "fields": [
                    {
                      "type": "string",
                      "name": "id",
                      "doc": "The id for the prompt. This must be GLOBALLY UNIQUE."
                    },
                    {
                      "type": {
                        "type": "record",
                        "name": "AuditStamp",
                        "namespace": "com.linkedin.pegasus2avro.common",
                        "fields": [
                          {
                            "type": "long",
                            "name": "time",
                            "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."
                          },
                          {
                            "java": {
                              "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                            },
                            "type": "string",
                            "name": "actor",
                            "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change.",
                            "Urn": "Urn"
                          },
                          {
                            "java": {
                              "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                            },
                            "type": [
                              "null",
                              "string"
                            ],
                            "name": "impersonator",
                            "default": null,
                            "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor.",
                            "Urn": "Urn"
                          },
                          {
                            "type": [
                              "null",
                              "string"
                            ],
                            "name": "message",
                            "default": null,
                            "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
                          }
                        ],
                        "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."
                      },
                      "name": "lastModified",
                      "doc": "The last time this prompt was touched for the entity (set, unset)"
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "record",
                          "name": "FormPromptFieldAssociations",
                          "namespace": "com.linkedin.pegasus2avro.common",
                          "fields": [
                            {
                              "type": [
                                "null",
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "record",
                                    "name": "FieldFormPromptAssociation",
                                    "namespace": "com.linkedin.pegasus2avro.common",
                                    "fields": [
                                      {
                                        "type": "string",
                                        "name": "fieldPath",
                                        "doc": "The field path on a schema field."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                                        "name": "lastModified",
                                        "doc": "The last time this prompt was touched for the field on the entity (set, unset)"
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "FormPromptResponse",
                                            "namespace": "com.linkedin.pegasus2avro.common",
                                            "fields": [
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "record",
                                                    "name": "StructuredPropertyPromptResponse",
                                                    "namespace": "com.linkedin.pegasus2avro.common",
                                                    "fields": [
                                                      {
                                                        "java": {
                                                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                        },
                                                        "type": "string",
                                                        "name": "propertyUrn",
                                                        "doc": "Which property was applied from this prompt response",
                                                        "Urn": "Urn"
                                                      },
                                                      {
                                                        "type": {
                                                          "type": "array",
                                                          "items": [
                                                            "string",
                                                            "double"
                                                          ]
                                                        },
                                                        "name": "values",
                                                        "doc": "Which values for the given property were applied from this prompt response"
                                                      }
                                                    ]
                                                  }
                                                ],
                                                "name": "structuredPropertyResponse",
                                                "default": null,
                                                "doc": "Response for a structured property type prompt"
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  {
                                                    "type": "record",
                                                    "name": "OwnershipPromptResponse",
                                                    "namespace": "com.linkedin.pegasus2avro.common",
                                                    "fields": [
                                                      {
                                                        "type": {
                                                          "type": "array",
                                                          "items": "string"
                                                        },
                                                        "name": "owners",
                                                        "doc": "The owners applied to an asset from this prompt response",
                                                        "Urn": "Urn",
                                                        "urn_is_array": true
                                                      },
                                                      {
                                                        "java": {
                                                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                        },
                                                        "type": "string",
                                                        "name": "ownershipTypeUrn",
                                                        "doc": "The type of ownership applied from this prompt response",
                                                        "Urn": "Urn"
                                                      }
                                                    ],
                                                    "doc": "Response for an ownership type prompt"
                                                  }
                                                ],
                                                "name": "ownershipResponse",
                                                "default": null,
                                                "doc": "Response for an ownership type prompt"
                                              }
                                            ],
                                            "doc": "A record of what was actually submitted when a user responds to a form prompt"
                                          }
                                        ],
                                        "name": "response",
                                        "default": null,
                                        "doc": "Optional record of what was actually submitted when a user responds to a field-level form prompt.\nThis should be populated going forward."
                                      }
                                    ],
                                    "doc": "Information about the status of a particular prompt for a specific schema field\non an entity."
                                  }
                                }
                              ],
                              "name": "completedFieldPrompts",
                              "default": null,
                              "doc": "A list of field-level prompt associations that are not yet complete for this form."
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "type": "array",
                                  "items": "com.linkedin.pegasus2avro.common.FieldFormPromptAssociation"
                                }
                              ],
                              "name": "incompleteFieldPrompts",
                              "default": null,
                              "doc": "A list of field-level prompt associations that are complete for this form."
                            }
                          ],
                          "doc": "Information about the field-level prompt associations on a top-level prompt association."
                        }
                      ],
                      "name": "fieldAssociations",
                      "default": null,
                      "doc": "Optional information about the field-level prompt associations."
                    },
                    {
                      "type": [
                        "null",
                        "com.linkedin.pegasus2avro.common.FormPromptResponse"
                      ],
                      "name": "response",
                      "default": null,
                      "doc": "Optional record of what was actually submitted when a user responds to a form prompt.\nThis should be populated going forward."
                    }
                  ],
                  "doc": "Information about the status of a particular prompt.\nNote that this is where we can add additional information about individual responses:\nactor, timestamp, and the response itself."
                }
              },
              "name": "incompletePrompts",
              "default": [],
              "doc": "A list of prompts that are not yet complete for this form."
            },
            {
              "type": {
                "type": "array",
                "items": "com.linkedin.pegasus2avro.common.FormPromptAssociation"
              },
              "name": "completedPrompts",
              "default": [],
              "doc": "A list of prompts that have been completed for this form."
            },
            {
              "type": [
                "null",
                "com.linkedin.pegasus2avro.common.AuditStamp"
              ],
              "name": "created",
              "default": null,
              "doc": "An audit stamp of when this form association was created"
            },
            {
              "type": [
                "null",
                "com.linkedin.pegasus2avro.common.AuditStamp"
              ],
              "name": "lastModified",
              "default": null,
              "doc": "An audit stamp of the last time this form association was modified"
            }
          ],
          "doc": "Properties of an applied form."
        }
      },
      "name": "incompleteForms",
      "doc": "All incomplete forms assigned to the entity."
    },
    {
      "Searchable": {
        "/*/completedPrompts/*/id": {
          "fieldName": "completedFormsCompletedPromptIds",
          "fieldType": "KEYWORD"
        },
        "/*/completedPrompts/*/lastModified/time": {
          "fieldName": "completedFormsCompletedPromptResponseTimes",
          "fieldType": "DATETIME"
        },
        "/*/incompletePrompts/*/id": {
          "fieldName": "completedFormsIncompletePromptIds",
          "fieldType": "KEYWORD"
        },
        "/*/urn": {
          "fieldName": "completedForms",
          "fieldType": "URN"
        }
      },
      "type": {
        "type": "array",
        "items": "com.linkedin.pegasus2avro.common.FormAssociation"
      },
      "name": "completedForms",
      "doc": "All complete forms assigned to the entity."
    },
    {
      "Searchable": {
        "/*/form": {
          "fieldName": "verifiedForms",
          "fieldType": "URN"
        }
      },
      "type": {
        "type": "array",
        "items": {
          "type": "record",
          "name": "FormVerificationAssociation",
          "namespace": "com.linkedin.pegasus2avro.common",
          "fields": [
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "type": "string",
              "name": "form",
              "doc": "The urn of the form that granted this verification.",
              "Urn": "Urn"
            },
            {
              "type": [
                "null",
                "com.linkedin.pegasus2avro.common.AuditStamp"
              ],
              "name": "lastModified",
              "default": null,
              "doc": "An audit stamp capturing who and when verification was applied for this form."
            }
          ],
          "doc": "An association between a verification and an entity that has been granted\nvia completion of one or more forms of type 'VERIFICATION'."
        }
      },
      "name": "verifications",
      "default": [],
      "doc": "Verifications that have been applied to the entity via completed forms."
    }
  ],
  "doc": "Forms that are assigned to this entity to be filled out"
}