app.person_work_details
TableRow level security on
A person's work details (Section 4.5.6 item 10): uniform sizes, dietary and accessibility needs and the travel profile. Owned and read only by the person; an engaging org sees a category only while the person shares it with that engagement (app.work_detail_shares, app.shared_work_details). The passport number is Restricted and encrypted.
Primary key: id
| Column | Type | Nullable | Description |
|---|---|---|---|
| id | uuid | No | Primary key, UUID v7. |
| deleted_at | timestamp with time zone | Yes | Soft delete time. A row with deleted_at set is ignored by every access helper. |
| person_id | uuid | No | Owner. One live row per person.References app.people.id |
| shirt_size | app.garment_letter_size | Yes | Shirt size. |
| jacket_size | app.garment_letter_size | Yes | Jacket size. |
| pants_size | text | Yes | Pants size as the person writes it, for example 32x32 or EU 48. |
| shoe_size | text | Yes | Shoe size with its system, for example US 10.5 or EU 44. |
| glove_size | app.garment_letter_size | Yes | Glove size. |
| hat_size | text | Yes | Hat size as the person writes it, for example 7 1/4 or 58 cm. |
| uniform_notes | text | Yes | Anything else about fit, for example a preferred cut. |
| dietary_needs | app.dietary_need[] | No | Dietary needs hospitality caters for, each once, in enum order. Confidential. |
| allergies | text | Yes | Food and other allergies in the person's words, with how severe they are. Confidential. |
| dietary_notes | text | Yes | Other dietary notes. Confidential. |
| accessibility_needs | app.accessibility_need[] | No | Accessibility needs, each once, in enum order. Confidential. |
| accessibility_notes | text | Yes | Accessibility needs in the person's words. Confidential. |
| seat_preference | app.seat_preference | Yes | Preferred seat when an org books travel. |
| meal_preference | text | Yes | Preferred in-flight meal, for example Vegetarian (VGML). |
| home_airport | character(3) | Yes | IATA code of the airport the person travels from, for example MIA. |
| passport_number | bytea | Yes | Passport number encrypted with pgp_sym_encrypt under the Vault key xos_passport_number_key. Restricted (data.restricted.read.government_id): never selectable or writable by signed-in callers; written through app.set_my_passport_number and read only through an audited reveal. |
| passport_number_last4 | text | Yes | Last four characters of the passport number, shown in place of the masked number; NULL when none is recorded. Set only with the number. |
| passport_issuing_country | character(2) | Yes | ISO 3166-1 alpha-2 country that issued the passport. Confidential. |
| passport_expires_on | date | Yes | Day the passport expires. Confidential; readable so reminders can run. |
| passport_name | text | Yes | Name exactly as printed in the passport, which travel bookings must match. Confidential. |
| created_at | timestamp with time zone | No | When the row was inserted. Set by the database. |
| created_by | uuid | Yes | Person who inserted the row, or null for a platform process. Set by the database.References app.people.id |
| updated_at | timestamp with time zone | No | When the row last changed. Set by the database. |
| updated_by | uuid | Yes | Person who last changed the row, or null for a platform process. Set by the database.References app.people.id |