A devmap file is a lihata document. The root node is ha:std_devmap.v1, which has a ha:comp_attribs subtree. This subtree contains all attributes that are set on the component that refers to the devmap.
Scalar attributes are plain text nodes in key=value form. Array attributes are lists of text items.
For example this is the devmap file for 2n7002 in sot23:
ha:std_devmap.v1 {
ha:comp_attribs {
footprint=sot23
li:portmap={
{G->pcb/pinnum=1}
{S->pcb/pinnum=2}
{D->pcb/pinnum=3}
}
}
}
It sets the footprint to sot23 then specifies a portmap array. Since portmap items contain slash, they each need to be quoted using {}.
Note: devmap does not know about the portmap syntax. For devmap li:portmap is just an arbitrary array-type attribute with 3 string/text items in it. Portmap has its own documentation, and can be used independently of devmap.