---
type: object
description: |-
  Identification of, and means of communication with, person responsible
  for the resource.
anyOf:
  - required:
    - name
  - required:
    - organization
properties:
  identifier:
    type: string
    description: |-
      A value uniquely identifying a contact.
  name:
    type: string
    description: |-
      The name of the responsible person.
  position:
    type: string
    description:
      The name of the role or position of the responsible person taken
      from the organization's formal organizational hierarchy or chart.
  organization:
    type: string
    description:
      Organization/affiliation of the contact.
  logo:
    description:
      Graphic identifying a contact. The link relation should be `icon`
      and the media type should be an image media type.
    allOf:
      - $ref: '../common-core/link.yaml'
      - type: object
        required:
          - rel
          - type
        properties:
          rel:
            enum:
              - icon
  phones:
    type: array
    description: Telephone numbers at which contact can be made.
    items:
      type: object
      required:
        - value
      properties:
        value:
          type: string
          description: The value is the phone number itself.
          pattern: "^\\+[1-9]{1}[0-9]{3,14}$"
          example: "+14165550142"
        roles:
          allOf:
            - description:
                The type of phone number (e.g. home, work, fax, etc.).
            - $ref: 'roles.yaml'
  emails:
    type: array
    description: Email addresses at which contact can be made.
    items:
      type: object
      required:
        - value
      properties:
        value:
          type: string
          description: The value is the email number itself.
          format: email
        roles:
          allOf:
            - description:
                The type of email (e.g. home, work, etc.).
            - $ref: 'roles.yaml'
  addresses:
    type: array
    description: Physical location at which contact can be made.
    items:
      type: object
      properties:
        deliveryPoint:
          type: array
          description: Address lines for the location.
          items:
            type: string
        city:
          type: string
          description: City for the location.
        administrativeArea:
          type: string
          description: State or province of the location.
        postalCode:
          type: string
          description: ZIP or other postal code.
        country:
          type: string
          description: Country of the physical address.  ISO 3166-1 is recommended.
        roles:
          allOf:
            - description:
                The type of address (e.g. office, home, etc.).
            - $ref: 'roles.yaml'
  links:
    type: array
    description: On-line information about the contact.
    items:
      allOf:
        - $ref: '../common-core/link.yaml'
        - type: object
          required:
            - type
  hoursOfService:
    type: string
    description: Time period when the contact can be contacted.
    example: "Hours: Mo-Fr 10am-7pm Sa 10am-22pm Su 10am-21pm"
  contactInstructions:
    type: string
    description: |-
      Supplemental instructions on how or when to contact the
      responsible party.
  roles:
    allOf:
      - description:
          The set of named duties, job functions and/or permissions
          associated with this contact.
          (e.g. developer, administrator, etc.).
      - $ref: 'roles.yaml'
