> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superoffice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Validate Appointment Entity

> Check that entity is ready for saving.

NsApiSlow threshold: 2000 ms.



## OpenAPI

````yaml /openapi/agent/openapi-v3-AppointmentAgent.json post /api/v1/Agents/Appointment/ValidateAppointmentEntity
openapi: 3.0.0
info:
  version: v1-Agents
  title: SuperOffice Agent API v1
  description: SuperOffice Agent API - AppointmentAgent
  contact:
    name: SuperOffice DevNet
    url: https://docs.superoffice.com/en/api/index.html
    email: sdk@superoffice.com
servers:
  - url: http://localhost:56350
  - url: https://localhost:56350
security: []
tags: []
externalDocs:
  description: >-
    The SuperOffice DevNet Community has more documentation, examples, and
    discussion forums.
  url: https://community.superoffice.com/en/developer/
paths:
  /api/v1/Agents/Appointment/ValidateAppointmentEntity:
    post:
      tags:
        - Appointment_Agent
      summary: Validate Appointment Entity
      description: |-
        Check that entity is ready for saving.

        NsApiSlow threshold: 2000 ms.
      operationId: v1AppointmentAgent_ValidateAppointmentEntity
      parameters:
        - name: $select
          in: query
          description: >-
            Optional comma separated list of properties to include in the
            result. Other fields are then nulled out to reduce payload size:
            "Name,department,category". Default = show all fields.
          required: false
          schema:
            type: string
        - name: Accept-Language
          in: header
          description: >-
            Convert string references and multi-language values into a specified
            language (iso2) code.
          required: false
          schema:
            type: string
        - name: SO-Language
          in: header
          description: >-
            Convert string references and multi-language values into a specified
            language (iso2) code. Overrides Accept-Language value.
          required: false
          schema:
            type: string
        - name: SO-Culture
          in: header
          description: >-
            Number, date formatting in a specified culture (iso2 language) code.
            Partially overrides SO-Language/Accept-Language value. Ignored if no
            Language set.
          required: false
          schema:
            type: string
        - name: SO-TimeZone
          in: header
          description: >-
            Specify the timezone code that you would like date/time responses
            converted to.
          required: false
          schema:
            type: string
        - name: SO-AppToken
          in: header
          description: >-
            The application token that identifies the partner app. Used when
            calling Online WebAPI from a server.
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.AppointmentCarriers.ValidateAppointmentEntityRequest
          text/json:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.AppointmentCarriers.ValidateAppointmentEntityRequest
          application/xml:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.AppointmentCarriers.ValidateAppointmentEntityRequest
          text/xml:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.AppointmentCarriers.ValidateAppointmentEntityRequest
          application/x-www-form-urlencoded:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.AppointmentCarriers.ValidateAppointmentEntityRequest
          application/json-patch+json:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.AppointmentCarriers.ValidateAppointmentEntityRequest
          application/merge-patch+json:
            schema:
              $ref: >-
                #/components/schemas/SuperOffice.WebApi.v1.Carriers.AppointmentCarriers.ValidateAppointmentEntityRequest
        description: AppointmentEntity
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
            text/json:
              schema:
                type: object
                additionalProperties:
                  type: string
            application/xml:
              schema:
                type: object
                additionalProperties:
                  type: string
            text/xml:
              schema:
                type: object
                additionalProperties:
                  type: string
            application/json-patch+json:
              schema:
                type: object
                additionalProperties:
                  type: string
            application/merge-patch+json:
              schema:
                type: object
                additionalProperties:
                  type: string
      security:
        - SuperOffice_Password: []
          SuperId_Authentication: []
components:
  schemas:
    SuperOffice.WebApi.v1.Carriers.AppointmentCarriers.ValidateAppointmentEntityRequest:
      description: 'ValidateAppointmentEntity: Check that entity is ready for saving.'
      type: object
      properties:
        AppointmentEntity:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.AppointmentEntity'
    SuperOffice.CRM.Services.AppointmentEntity:
      description: >-
        Partial AppointmentEntity class associating the generated
        AppointmentEntity with an interface.
      type: object
      properties:
        Associate:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Associate'
        Contact:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Contact'
        CreatedBy:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Associate'
        UpdatedBy:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Associate'
        CreatedDate:
          format: date-time
          description: Registered date  in UTC.
          type: string
        AppointmentId:
          format: int32
          description: Primary key
          type: integer
        Description:
          description: Description of the appointment.
          type: string
        Title:
          description: The title of the appointment.
          type: string
        Agenda:
          description: The agenda of the appointment.
          type: string
        InternalNotes:
          description: Internal notes for the appointment.
          type: string
        StartDate:
          format: date-time
          description: date + start time planned
          type: string
        EndDate:
          format: date-time
          description: Date + end time planned
          type: string
        InvitedPerson:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Person'
        Person:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Person'
        MotherId:
          format: int32
          description: >-
            ID of mother appointment; self if booking master, master ID if
            booking slave, 0 if normal appointment. However, if 0 and assoc_id
            != reg_id then this is an assigned appointment, indicated vt type =
            kBooking
          type: integer
        Priority:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Priority'
        Private:
          description: >-
            The confidentiality of appointments is shown as different types of
            “private” on the appointment. For an updated list of “private”
            types, see the database manual.
          enum:
            - Public
            - PrivateUser
            - PrivateGroup
          type: string
        Project:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Project'
        Type:
          description: >-
            The different types of appointment, if the appointment is supposed
            to be shown in the diary or checklist, or if it's a document. See
            the different types of appointments in the database manual.
          enum:
            - Unknown
            - inDiary
            - inChecklist
            - Note
            - Document
            - SavedReport
            - BookingForDiary
            - BookingForChecklist
            - MergeDraft
            - MergeFinal
          type: string
        UpdatedDate:
          format: date-time
          description: Updated date  in UTC.
          type: string
        Completed:
          description: >-
            Appointment Completed state. This property is the part of the Status
            property that is the completed state. Could be three state if the
            three state user preference is set.
          enum:
            - Unknown
            - NotStarted
            - Started
            - Completed
          type: string
        ActiveLinks:
          format: int32
          description: Number of active links to sale, document, appointment.
          type: integer
        Links:
          description: List of all elements linked to the appointment.
          type: array
          items:
            $ref: '#/components/schemas/SuperOffice.CRM.Services.Link'
        AlarmLeadTime:
          description: Alarm lead time.
          type: string
        HasAlarm:
          description: Does this appointment have an alarm
          type: boolean
        ColorIndex:
          format: int32
          description: >-
            Appointment colour, used only in Japanese versions. Western versions
            take colour from Task
          type: integer
        IsFree:
          description: True if free, false if busy
          type: boolean
        IsAlldayEvent:
          description: True if all day event
          type: boolean
        LagTime:
          description: as leadtime, but after the end - time blocked for travel etc.
          type: string
        LeadTime:
          description: Time blocked (minutes) BEFORE starttime
          type: string
        Location:
          description: >-
            Location for appointment, defaulted from invited resource of type
            place and other rules, but you can write anything you want here
          type: string
        RejectCounter:
          format: int32
          description: How many invitees have rejected this appointment
          type: integer
        RejectReason:
          description: "Why was this booking or assignment rejected, the RejectReason list is a source of suggestions but you can write anything here \r\n<para>Use MDO List name \"rejectReason\" to get list items.</para>"
          type: string
        Recurrence:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.RecurrenceInfo'
        Participants:
          description: List of id's of the participants to this appointment.
          type: array
          items:
            $ref: '#/components/schemas/SuperOffice.CRM.Services.ParticipantInfo'
        AssignmentStatus:
          description: >-
            Status if this appointment is in the process of being assigned to
            someone else
          enum:
            - Unknown
            - None
            - Assigning
            - Seen
            - Declined
          type: string
        InvitationStatus:
          description: Status if this appointment represents an invitation
          enum:
            - Unknown
            - None
            - Accepted
            - Hidden
            - Invitation
            - Moved
            - Seen
            - MovedSeen
            - Declined
            - Cancelled
          type: string
        BookingType:
          description: The type of booking the appointment represents
          enum:
            - Unknown
            - None
            - Owner
            - Participant
          type: string
        ActiveDate:
          format: date-time
          description: The date to be used for searching & showing
          type: string
        HasConflict:
          description: >-
            Does the appointment overlap with another appointment in the user's
            diary?
          type: boolean
        AssignedBy:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Associate'
        MotherAssociate:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Associate'
        Task:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.TaskListItem'
        PreferredTZLocation:
          format: int32
          description: Appointments preferred timezone location.
          type: integer
        PreferredTZLocationData:
          $ref: '#/components/schemas/SuperOffice.CRM.TimeZoneData'
        Sale:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Sale'
        SuggestedAppointmentId:
          format: int32
          description: >-
            Suggested guide item that this appointment is an instance of (Note:
            NOT VALID for document-type appointments, they have their own link)
          type: integer
        IsMileStone:
          description: Is this appointment a milestone?
          type: boolean
        CautionWarning:
          description: Status field to indicate appointments that have some sort of problem
          enum:
            - OK
            - NotInSync
            - NotNotifiedByEmail
            - RecurrencePatternNotSupported
            - IncomingRecurrenceChangeNotSupported
            - ExternalParticipantsDateTimeMismatch
          type: string
        OwnedExternally:
          description: Set if an external system owns this appointment.
          enum:
            - None
            - Other
            - Outlook
            - Google
          type: string
        JoinVideomeetUrl:
          description: >-
            Blank when not a video meeting. Filled with Join Meeting URL when
            created.
          type: string
        CentralserviceVideomeetId:
          description: >-
            GUID for video meeting in central services – this is set when we
            create meetings from SuperOffice. It is blank for incoming meetings
            created from inbox.
          type: string
        UserDefinedFields:
          description: "Deprecated: Use {SuperOffice.CRM.Services.AppointmentEntity.CustomFields} instead.\r\nDictionary of user defined field data.\r\nThe key string is the ProgId of the UdefField, or if the ProgId is empty it is a string of the format \"SuperOffice:[UdefFieldIdentity]\", e.g. \"SuperOffice:1234\""
          type: object
          additionalProperties:
            type: string
        ExtraFields:
          description: "Deprecated: Use {SuperOffice.CRM.Services.AppointmentEntity.CustomFields} instead.\r\nExtra fields added to the carrier. This could be data from Plug-ins, the foreign key system, external applications, etc."
          type: object
          additionalProperties:
            type: string
        CustomFields:
          description: "Udef + Extra fields added to the carrier. Extra fields as defined by changes to database schema + user-defined fields as defined by admin.\r\nCustom fields combines user defined fields and extra fields into one bucket. \r\nThe individual {SuperOffice.CRM.Services.AppointmentEntity.ExtraFields} and <see cref=\"P:SuperOffice.CRM.Services.AppointmentEntity.UserDefinedFields\">UserDefinedFields</see> properties are deprecated in favor of this\r\ncombined collection."
          type: object
          additionalProperties:
            type: string
        PublishEventDate:
          format: date-time
          description: Publish event date
          type: string
        PublishTo:
          format: date-time
          description: Publication valid to (inclusive)
          type: string
        PublishFrom:
          format: date-time
          description: Publication valid from (inclusive)
          type: string
        IsPublished:
          description: Publication is published
          type: boolean
        VisibleFor:
          description: The set of users or groups the record is visible for
          type: array
          items:
            $ref: '#/components/schemas/SuperOffice.CRM.Services.VisibleFor'
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.Associate:
      description: "Carrier object for Associate.\r\nServices for the Associate Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IAssociateAgent\">Associate Agent</see>."
      type: object
      properties:
        AssociateId:
          format: int32
          description: Primary key
          type: integer
        Name:
          description: Initials, also login name, possibly database user name
          type: string
        PersonId:
          format: int32
          description: "Owning person record \r\n<para>Use MDO List name \"person\" to get list items.</para>"
          type: integer
        Rank:
          format: int32
          description: Rank order
          type: integer
        Tooltip:
          description: Tooltip or other description
          type: string
        Type:
          description: >-
            User type - 1 = internal user, 2 = resource, 3 = external user, 4 =
            anonymous, 5 = system
          enum:
            - Unknown
            - InternalAssociate
            - ResourceAssociate
            - ExternalAssociate
            - AnonymousAssociate
            - SystemAssociate
          type: string
        GroupIdx:
          format: int32
          description: >-
            Primary group membership, see UserGroupLink for secondary
            memberships
          type: integer
        FullName:
          description: >-
            The associate's culture formatted fullname (firstname, middleName
            and lastname)
          type: string
        FormalName:
          description: >-
            The associate's culture formatted formalname (firstname, middleName
            and lastname, title, mrmrs)
          type: string
        Deleted:
          description: >-
            If true, the user is retired and should have no rights, not appear
            in lists, etc.
          type: boolean
        EjUserId:
          format: int32
          description: >-
            ID of the ej user record corresponding to this associate; 0 for
            associates that are not ej users
          type: integer
        UserName:
          description: User name
          type: string
        ExtraFields:
          description: "Deprecated: Use {SuperOffice.CRM.Services.Associate.CustomFields} instead.\r\nExtra fields added to the carrier. This could be data from Plug-ins, the foreign key system, external applications, etc."
          type: object
          additionalProperties:
            type: string
        CustomFields:
          description: "Udef + Extra fields added to the carrier. Extra fields as defined by changes to database schema + user-defined fields as defined by admin.\r\nCustom fields combines user defined fields and extra fields into one bucket. \r\nThe individual {SuperOffice.CRM.Services.Associate.ExtraFields} and <see cref=\"!:UserDefinedFields\">UserDefinedFields</see> properties are deprecated in favor of this\r\ncombined collection."
          type: object
          additionalProperties:
            type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.Contact:
      description: "Carrier object for Contact.\r\nServices for the Contact Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IContactAgent\">Contact Agent</see>."
      type: object
      properties:
        ContactId:
          format: int32
          description: Primary key
          type: integer
        Name:
          description: Contact name
          type: string
        OrgNr:
          description: VAT number or similar
          type: string
        Department:
          description: Department
          type: string
        URL:
          description: The internet address to this contact
          type: string
        City:
          description: City corresponding to zip code
          type: string
        DirectPhone:
          description: The contacts phone
          type: string
        AssociateId:
          format: int32
          description: Our contact
          type: integer
        CountryId:
          format: int32
          description: Country
          type: integer
        EmailAddress:
          description: The contact email address
          type: string
        Kananame:
          description: Contact kana name, used in Japanese versions only
          type: string
        EmailAddressName:
          description: Visible field
          type: string
        URLName:
          description: Visible field
          type: string
        AssociateFullName:
          description: >-
            The associate's culture formatted fullname (firstname, middleName
            and lastname)
          type: string
        BusinessName:
          description: The business list item name
          type: string
        CategoryName:
          description: The category list item name
          type: string
        CountryName:
          description: Name of country in installed language
          type: string
        Address:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.Address'
        FormattedAddress:
          description: >-
            The contact's address, formatted with linebreaks and spaces into a
            single string.
          type: string
        FullName:
          description: ''
          type: string
        IsOwnerContact:
          description: >-
            Is the contact an owner contact.  This means that all persons on
            this contact can on only be internal users and not external users.
          type: boolean
        ActiveErpLinks:
          format: int32
          description: The number of active erp links
          type: integer
        Number1:
          description: Alphanumeric user field
          type: string
        Number2:
          description: Alphanumeric user field
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.Person:
      description: "Carrier object for Person.\r\nServices for the Person Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IPersonAgent\">Person Agent</see>."
      type: object
      properties:
        Position:
          description: >-
            The position. This is a predefined SuperOffice value, different from
            Title
          type: string
        PersonId:
          format: int32
          description: Primary key
          type: integer
        Mrmrs:
          description: e.g. Mrs   sex_title
          type: string
        Firstname:
          description: First name
          type: string
        Lastname:
          description: Last name
          type: string
        MiddleName:
          description: Middle name or 'van' etc.
          type: string
        Title:
          description: Title
          type: string
        Description:
          description: Info text/description on person.
          type: string
        Email:
          description: First email on contact person.
          type: string
        FullName:
          description: >-
            Get the persons full name (internal name used in clients for
            employees).
          type: string
        DirectPhone:
          description: Returns the direct phone that belong to the contact person.
          type: string
        FormalName:
          description: >-
            Get formal name for a person, as used in labels. (Full name + person
            title + academic title)
          type: string
        CountryId:
          format: int32
          description: Country
          type: integer
        ContactId:
          format: int32
          description: Owning contact ID
          type: integer
        ContactName:
          description: The persons company name
          type: string
        Retired:
          format: int32
          description: >-
            1 = the user is retired and should have no rights, not appear in
            lists, etc.
          type: integer
        Rank:
          format: int32
          description: Display sort sequence for default sort order
          type: integer
        ActiveInterests:
          format: int32
          description: >-
            Number of records in pintr table; select count(*) from pintr pi
            where pi.person_id = this.person_id == activeInterests is always
            true
          type: integer
        ContactDepartment:
          description: The persons contact department
          type: string
        ContactCountryId:
          format: int32
          description: The persons contact country id
          type: integer
        ContactOrgNr:
          description: The persons contact organization number
          type: string
        FaxPhone:
          description: Returns the fax phone that belong to the contact person.
          type: string
        MobilePhone:
          description: Returns the mobile phone that belong to the contact person.
          type: string
        ContactPhone:
          description: Returns the direct phone that belong to the persons contact.
          type: string
        AssociateName:
          description: Name of the person's owner
          type: string
        AssociateId:
          format: int32
          description: Id of the item's owner (Associate id)
          type: integer
        UsePersonAddress:
          description: If 1, use person's address for mailing instead of company address
          type: boolean
        ContactFax:
          description: Actual phone number as eneterd by the user
          type: string
        Kanafname:
          description: Kana first name, used in Japanese versions only
          type: string
        Kanalname:
          description: Kana last name, used in Japanese versions only
          type: string
        Post1:
          description: Postal address, used in Japanese versions only
          type: string
        Post2:
          description: Postal address, used in Japanese versions only
          type: string
        Post3:
          description: Postal address, used in Japanese versions only
          type: string
        EmailName:
          description: E-mail description
          type: string
        ContactFullName:
          description: Company full name + department
          type: string
        ActiveErpLinks:
          format: int32
          description: How many active ERP links are there for this person?
          type: integer
        TicketPriorityId:
          format: int32
          description: Ticket priority ID
          type: integer
        SupportLanguageId:
          format: int32
          description: Support priority ID
          type: integer
        SupportAssociateId:
          format: int32
          description: Our support contact for this person
          type: integer
        CategoryName:
          description: The category list item name
          type: string
        PersonNumber:
          description: Alphanumeric user field
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.Priority:
      description: "Carrier object for Priority.\r\nServices for the Priority Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IListAgent\">List Agent</see>."
      type: object
      properties:
        Id:
          format: int32
          description: The List Item Id
          type: integer
        Value:
          description: The List Item Value
          type: string
        Tooltip:
          description: The List Item Tooltip
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.Project:
      description: "Carrier object for Project.\r\nServices for the Project Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IProjectAgent\">Project Agent</see>."
      type: object
      properties:
        ProjectId:
          format: int32
          description: Primary key
          type: integer
        Name:
          description: Project name
          type: string
        Description:
          description: The projects description
          type: string
        URL:
          description: URL address
          type: string
        Type:
          description: The project type.
          type: string
        AssociateId:
          format: int32
          description: The project owner id (associate id)
          type: integer
        AssociateFullName:
          description: The project owner
          type: string
        TypeId:
          format: int32
          description: ''
          type: integer
        Updated:
          format: date-time
          description: Last updated date  in UTC.
          type: string
        StatusId:
          format: int32
          description: The projects status id
          type: integer
        Status:
          description: The projects status
          type: string
        TextId:
          format: int32
          description: The id of the description
          type: integer
        PublishTo:
          format: date-time
          description: Publication valid to (inclusive)
          type: string
        PublishFrom:
          format: date-time
          description: Publication valid from (inclusive)
          type: string
        IsPublished:
          description: ''
          type: boolean
        URLName:
          description: Visible field
          type: string
        ProjectNumber:
          description: Automatically generated number
          type: string
        ActiveErpLinks:
          format: int32
          description: The number of active erp links
          type: integer
        EventId:
          format: int32
          description: Reserved field for Lyyti event when project is linked to an event.
          type: integer
        StartDate:
          format: date-time
          description: >-
            Reserved field for Lyyti event when project is linked to an event,
            is the event start date.
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.Link:
      description: "Links two entities (contacts/projects/sales/URLs) together.\r\n<para />\r\nCarrier object for Link.\r\nServices for the Link Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IListAgent\">List Agent</see>."
      type: object
      properties:
        EntityName:
          description: >-
            Name of the entity the link points to (The destination/target
            entity)
          type: string
        Id:
          format: int32
          description: >-
            Id of the entity the link points to (The destination/target entity
            primary key)
          type: integer
        Description:
          description: Link description.
          type: string
        ExtraInfo:
          description: >-
            Extrainfo for link. Use for information that does not have a primary
            key
          type: string
        LinkId:
          format: int32
          description: Primary key
          type: integer
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.RecurrenceInfo:
      description: Class representing the recurrence of an appointment booking
      type: object
      properties:
        RecurrenceId:
          format: int32
          description: The recurrence rule id
          type: integer
        StartDate:
          format: date-time
          description: Start date of the repetition pattern
          type: string
        EndDate:
          format: date-time
          description: "End date of the repetition pattern\r\nOnly used when the end is calculated from a end date. {SuperOffice.Data.RecurrenceEndType.EndDate}"
          type: string
        RecurrenceCounter:
          format: int32
          description: "Number of recurrences\r\nOnly used when the end is calculated from a number of repetitions. {SuperOffice.Data.RecurrenceEndType.Counter}"
          type: integer
        RecurrenceEndType:
          description: >-
            Type defining how the end of the recurrence sequence should be
            calculated
          enum:
            - Unknown
            - EndDate
            - Counter
          type: string
        Pattern:
          description: The recurrence pattern (Daily, Weekly, Monthly, Yearly, Custom)
          enum:
            - Unknown
            - Daily
            - Weekly
            - Monthly
            - Yearly
            - Custom
          type: string
        DayPattern:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.RecurrenceDayPattern'
        WeekPattern:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.RecurrenceWeekPattern'
        MonthPattern:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.RecurrenceMonthPattern'
        YearPattern:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.RecurrenceYearPattern'
        Dates:
          description: List of all dates where this recurrence occurs
          type: array
          items:
            $ref: '#/components/schemas/SuperOffice.CRM.Services.RecurrenceDate'
        IsRecurrence:
          description: >-
            Get a or set IsRecurrence, indicating if this is a repeating
            appointment or not.
          type: boolean
    SuperOffice.CRM.Services.ParticipantInfo:
      description: Class representing an appointment participant.
      type: object
      properties:
        AssociateId:
          format: int32
          description: >-
            Associate id of the participant if the participant is an associate
            (or resource)
          type: integer
        PersonId:
          format: int32
          description: Person id of the participant if the participant is a person
          type: integer
        ContactId:
          format: int32
          description: >-
            Contact id of the participant if the participant is an associate or
            person
          type: integer
        EmailId:
          format: int32
          description: >-
            The email id of the email belonging to the appointment record
            belonging to this person
          type: integer
        SendEmail:
          description: >-
            True if the participant has been sent an email or should be sent an
            email
          type: boolean
        InvitationStatus:
          description: The participant status for the appointment
          enum:
            - Unknown
            - None
            - Accepted
            - Hidden
            - Invitation
            - Moved
            - Seen
            - MovedSeen
            - Declined
            - Cancelled
          type: string
        EmailAddress:
          description: >-
            The email address to be used as a participant if neither person id
            nor associate id has been set.
          type: string
        Description:
          description: >-
            Description added for the email address participant, added to the
            email-table's description field if present.
          type: string
        ExternallyOwnedType:
          enum:
            - Unknown
            - Organizer
            - Required
            - Optional
            - Resource
          type: string
        ExternallyOwnedStatus:
          enum:
            - Unknown
            - TentativelyAccepted
            - Accepted
            - Declined
            - NotResponded
          type: string
    SuperOffice.CRM.Services.TaskListItem:
      description: "Carrier object for TaskListItem.\r\nServices for the TaskListItem Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.IAppointmentAgent\">Appointment Agent</see>."
      type: object
      properties:
        TaskListItemId:
          format: int32
          description: Primary key
          type: integer
        Value:
          description: The list item
          type: string
        Direction:
          description: 1 = incoming, 2 = outgoing, see EAppntDirection
          enum:
            - Unknown
            - Incoming
            - Outgoing
            - SaintAll
          type: string
        Type:
          description: >-
            1 = app, 2 = doc, 3 = email, 4 = fax, 5 = phone, 6 = todo - see
            EAppntRecordTypes
          enum:
            - Unknown
            - Appointment
            - Document
            - Email
            - Fax
            - Phone
            - ToDo
            - MailMergeDraft
            - MailMergeFinal
            - Report
            - SaintAll
          type: string
        Tooltip:
          description: Tooltip or other description
          type: string
        Deleted:
          description: If true, the Task list item is deleted
          type: boolean
        IntentId:
          format: int32
          description: Link to the intention of this kind of task (used by SAINT)
          type: integer
        Rank:
          format: int32
          description: Rank order
          type: integer
        IsDefaultAlldayEvent:
          description: True if all day event
          type: boolean
        IsDefaultFree:
          description: True if free, false if busy
          type: boolean
        IsDefaultPublished:
          description: Published to external persons
          type: boolean
        ColorIndex:
          description: JAP
          enum:
            - LightBlue
            - DarkBlue
            - LightGray
            - DarkGray
            - LightGreen
            - DarkGreen
            - LightYellow
            - DarkYellow
            - LightRed
            - DarkRed
            - BlueAlt1
            - BlueAlt2
            - BlueAlt3
            - GrayAlt1
            - GrayAlt2
            - GrayAlt3
            - GreenAlt1
            - GreenAlt2
            - GreenAlt3
            - YellowAlt1
            - YellowAlt2
            - YellowAlt3
            - RedAlt1
            - RedAlt2
            - RedAlt3
          type: string
        DefaultVideomeetingStatus:
          description: >-
            Default video-meeting status for meetings created in SuperOffice
            CRM.
          enum:
            - NoChange
            - VideoMeetingOn
            - VideoMeetingOff
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.TimeZoneData:
      type: object
      properties:
        TZLocationID:
          format: int32
          description: Timezone location ID - primary key.
          type: integer
        Name:
          description: >-
            Name associated with the location: Country name + region name,
            Norway, United States - Alaska
          type: string
        TZLocationCode:
          description: "Code associated with location: UTC, AR-NQ, AU-QLD, PF2A\r\nNot the an ISO country code. Unique."
          type: string
        TZLocationCities:
          description: 'Cities associated with location: Oslo, London, Rio de Janeiro'
          type: string
        IsoNumber:
          format: int32
          description: 'Country ISO code associated with location: 578'
          type: integer
        TimeZoneSTDRules:
          description: Dictionary of standard rules
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.TimeZoneRule'
        TimeZoneDSTRules:
          description: Dictionary of Daylight saving time rules
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.TimeZoneRule'
    SuperOffice.CRM.Services.Sale:
      description: "Carrier object for Sale.\r\nServices for the Sale Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.ISaleAgent\">Sale Agent</see>."
      type: object
      properties:
        ContactName:
          description: Contact name
          type: string
        SaleDate:
          format: date-time
          description: (expected / lost / won) sales date
          type: string
        SaleId:
          format: int32
          description: Primary key
          type: integer
        Probability:
          format: int32
          description: Actual probability, may differ from the one in the list
          type: integer
        Title:
          description: Sale heading (short description?)
          type: string
        Amount:
          format: double
          description: Total sale amount
          type: number
        Currency:
          description: Currency the sale was made in.
          type: string
        ProjectName:
          description: Project name
          type: string
        AssociateFullName:
          description: The sale's owner
          type: string
        Description:
          description: The sales description
          type: string
        Status:
          description: The sale's status, indicating wether the sale is open, sold or lost.
          enum:
            - Unknown
            - Open
            - Sold
            - Lost
            - Stalled
            - SaintAll
          type: string
        WeightedAmount:
          format: double
          description: The weighted amount ( amount *  probability / 100)
          type: number
        ProjectId:
          format: int32
          description: Optional project reference
          type: integer
        EarningPercent:
          format: double
          description: Earning as percent of total
          type: number
        Earning:
          format: double
          description: Earning on sale
          type: number
        ContactId:
          format: int32
          description: Optional contact reference
          type: integer
        AssociateId:
          format: int32
          description: The sale's owner id
          type: integer
        PersonId:
          format: int32
          description: The sale's contact persons id
          type: integer
        SaleTypeId:
          format: int32
          description: The sale's type id
          type: integer
        SaleTypeName:
          description: The sale's type name
          type: string
        PersonFullName:
          description: The name of the person this sale belongs to.
          type: string
        Completed:
          description: >-
            The Sale completed state. The completed state is either Started or
            Completed. NotStarted is treated as Started. The value maps to the
            Done database field.
          enum:
            - Unknown
            - NotStarted
            - Started
            - Completed
          type: string
        ActiveErpLinks:
          format: int32
          description: The number of active erp links
          type: integer
        NextDueDate:
          format: date-time
          description: >-
            Next due date, this is a denormalization of 'closest future activity
            date, or most recent if no future activities'. Maintained by the
            system, but very convenient for searching.
          type: string
        Number:
          description: Alphanumeric user field
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.VisibleFor:
      description: "Carrier object for VisibleFor.\r\nServices for the VisibleFor Carrier is available from the <see cref=\"T:SuperOffice.CRM.Services.ISentryAgent\">Sentry Agent</see>."
      type: object
      properties:
        VisibleId:
          format: int32
          description: ''
          type: integer
        Visibility:
          description: ''
          enum:
            - All
            - Associate
            - Group
          type: string
        DisplayValue:
          description: ''
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Security.TableRight:
      description: "Wraps a table right together with an explanatory reason.\r\nCode can indicate why access is restricted."
      type: object
      properties:
        Mask:
          type: string
        Reason:
          type: string
    SuperOffice.CRM.Security.FieldProperty:
      description: >-
        Class holding properties like field length, field type about a field in
        the carrier.
      type: object
      properties:
        FieldRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldRight'
        FieldType:
          type: string
        FieldLength:
          format: int32
          description: ''
          type: integer
    SuperOffice.CRM.Services.Address:
      description: "Street and/or Postal address, in both formatted and structured forms. You only need to modify one of the two for the change to be registered.\r\n<para />\r\nCarrier object for Address."
      type: object
      properties:
        Wgs84Latitude:
          format: double
          description: >-
            Latitude (that's north/south), decimal degrees, relative to WGS 84
            ellipsoid. SuperOffice ASA is at 59.91892. This value needs no
            further grid reference or other qualifying information.
          type: number
        Wgs84Longitude:
          format: double
          description: >-
            Longitude (that's East/west), decimal degrees, relative to WGS 84
            ellipsoid. SuperOffice ASA is at 10.73159. This value needs no
            further grid reference or other qualifying information.
          type: number
        LocalizedAddress:
          description: >-
            LocalizedFieldArray is a list of LocalizedFieldList objects. Used to
            store localized information such as formatted address data.
          type: array
          items:
            type: array
            items:
              $ref: '#/components/schemas/SuperOffice.CRM.Services.LocalizedField'
        Street:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.StructuredAddress'
        Postal:
          $ref: '#/components/schemas/SuperOffice.CRM.Services.StructuredAddress'
        Formatted:
          description: >-
            Read-only formatted address multi-line string. Combines street and
            postal into one string. e.g.: <c>"Postboks 123,\nBrugata 123,\n1234
            OSLO\n"</c> or <c>"Postbox 123,\nBridgelane 123,\nWest
            Tooting,\nEast Shire ES2 W31\n"</c>.
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.RecurrenceDayPattern:
      description: Class representing a pattern for daily recurrence
      type: object
      properties:
        Pattern:
          description: The type of daily recurrence pattern
          enum:
            - Unknown
            - EveryWorkday
            - EveryWeekday
            - EveryCyclicDay
          type: string
        Cycle:
          format: int32
          description: "The number of days between each recurrence.\r\nOnly used when the cyclic pattern occurs. {SuperOffice.Data.RecurrenceDailyPattern.EveryCyclicDay}"
          type: integer
    SuperOffice.CRM.Services.RecurrenceWeekPattern:
      description: Class representing a pattern for weekly recurrence
      type: object
      properties:
        Weekdays:
          description: The weekdays the recurrence should occur for
          enum:
            - Unknown
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
            - Sunday
          type: string
        Cycle:
          format: int32
          description: The number of weeks between each repetition
          type: integer
    SuperOffice.CRM.Services.RecurrenceMonthPattern:
      description: Class representing a pattern for monthly recurrence
      type: object
      properties:
        Pattern:
          description: The type of monthly recurrence pattern
          enum:
            - Unknown
            - DayOfMonth
            - WeekdayOfMonth
          type: string
        Cycle:
          format: int32
          description: The number of months between each repetition
          type: integer
        Day:
          format: int32
          description: "The day of the month when the recurrence occurs\r\nOnly used when the weekday of month pattern occurs. \r\n{SuperOffice.Data.RecurrenceMonthlyPattern.DayOfMonth}{SuperOffice.Data.RecurrenceYearlyPattern.DayOfMonth}"
          type: integer
        Weekday:
          description: "The weekday of the recurring pattern. \r\nOnly used when the weekday of month pattern occurs. \r\n{SuperOffice.Data.RecurrenceMonthlyPattern.WeekdayOfMonth}{SuperOffice.Data.RecurrenceYearlyPattern.WeekdayOfMonth}"
          enum:
            - Unknown
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
            - Sunday
          type: string
        WeekOfMonth:
          description: "The week of the month\r\nOnly used when the weekday of month pattern occurs. \r\n{SuperOffice.Data.RecurrenceMonthlyPattern.WeekdayOfMonth}{SuperOffice.Data.RecurrenceYearlyPattern.WeekdayOfMonth}"
          enum:
            - Unknown
            - First
            - Second
            - Third
            - Fourth
            - Last
          type: string
    SuperOffice.CRM.Services.RecurrenceYearPattern:
      description: Class representing a pattern for yearly recurrence
      type: object
      properties:
        Pattern:
          description: The type of yearly recurrence pattern
          enum:
            - Unknown
            - DayOfMonth
            - WeekdayOfMonth
          type: string
        Cycle:
          format: int32
          description: >-
            The month of the year where the recurrence occurs. 1 is January and
            12 is December.
          type: integer
        Day:
          format: int32
          description: "The day of the month when the recurrence occurs\r\nOnly used when the weekday of month pattern occurs. \r\n{SuperOffice.Data.RecurrenceMonthlyPattern.DayOfMonth}{SuperOffice.Data.RecurrenceYearlyPattern.DayOfMonth}"
          type: integer
        Weekday:
          description: "The weekday of the recurring pattern. \r\nOnly used when the weekday of month pattern occurs. \r\n{SuperOffice.Data.RecurrenceMonthlyPattern.WeekdayOfMonth}{SuperOffice.Data.RecurrenceYearlyPattern.WeekdayOfMonth}"
          enum:
            - Unknown
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
            - Sunday
          type: string
        WeekOfMonth:
          description: "The week of the month\r\nOnly used when the weekday of month pattern occurs. \r\n{SuperOffice.Data.RecurrenceMonthlyPattern.WeekdayOfMonth}{SuperOffice.Data.RecurrenceYearlyPattern.WeekdayOfMonth}"
          enum:
            - Unknown
            - First
            - Second
            - Third
            - Fourth
            - Last
          type: string
    SuperOffice.CRM.Services.RecurrenceDate:
      description: Class representing a Date for recurrence.
      type: object
      properties:
        Date:
          format: date-time
          description: Date of the recurrence.
          type: string
        IsConflict:
          description: Is there a conflict for this occurrence.
          type: boolean
        Description:
          description: Conflict or day (e.g. red, blue, etc. letter-day) name.
          type: string
        DescriptionStyleHint:
          description: Style hint for the description (i.e. red for red-letter-days)
          type: string
        Tooltip:
          description: Description of conflict or other things happening this day.
          type: string
    SuperOffice.CRM.TimeZoneRule:
      type: object
      properties:
        StartDay:
          format: int32
          type: integer
        StartMonth:
          format: int32
          type: integer
        EndDay:
          format: int32
          type: integer
        EndMonth:
          format: int32
          type: integer
        TZOffset:
          format: int32
          type: integer
        StartRulePattern:
          type: string
        EndRulePattern:
          type: string
    SuperOffice.CRM.Security.FieldRight:
      description: "Wraps the field right together with an explanatory reason.\r\nAlso adds logical operators to the field rights so that they can be easily combined."
      type: object
      properties:
        Mask:
          type: string
        Reason:
          type: string
    SuperOffice.CRM.Services.LocalizedField:
      description: "LocalizedField is used to store localized information such as formatted address data, a formatted phone number, etc.\r\n<para />\r\nCarrier object for LocalizedField."
      type: object
      properties:
        Name:
          description: Name of the value field
          type: string
        Value:
          description: The field's value
          type: string
        Tooltip:
          description: The tooltip
          type: string
        Label:
          description: The label of the field
          type: string
        ValueLength:
          format: int32
          description: Database length of the value
          type: integer
        AddressType:
          description: ''
          type: string
        TableRight:
          $ref: '#/components/schemas/SuperOffice.CRM.Security.TableRight'
        FieldProperties:
          description: >-
            Field property dictionary mapping field names to field access
            rights.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SuperOffice.CRM.Security.FieldProperty'
    SuperOffice.CRM.Services.StructuredAddress:
      description: "Address with structured fields (Address1, City, Zip) - does not vary its layout by country, unliked the formatted address.\r\n<para />\r\nCarrier object for StructuredAddress."
      type: object
      properties:
        AtypeIdx:
          description: >-
            Bit mask, combines address type (EAddressType) and owner type
            (EOwnerType)
          enum:
            - Unknown
            - ContactPostalAddress
            - ContactStreetAddress
            - PersonPrivateAddress
            - QuoteBillingAddress
            - QuoteShippingAddress
          type: string
        Address1:
          description: Address line 1
          type: string
        Address2:
          description: Address line 2
          type: string
        Address3:
          description: Address line 3
          type: string
        City:
          description: City corresponding to zip code
          type: string
        County:
          description: County (not country)
          type: string
        State:
          description: State
          type: string
        Zipcode:
          description: Zip code, alphanumeric
          type: string
        Formatted:
          description: >-
            Read-only formatted address multi-line string. e.g.: <c>"Brugata
            123,\n1234 OSLO\n"</c> or <c>"Bridgelane 123,\nWest Tooting,\nThe
            Shire ES2 W31\n"</c>.
          type: string

````

## Related topics

- [Validate Appointment Entity](/en/api/reference/restful/rest/appointment/validate-appointment-entity.md)
- [SuperOffice.WebApi.Data.Appointment ValidateAppointmentEntityRequest](/en/api/reference/webapi/SuperOffice.WebApi.Data.Appointment_ValidateAppointmentEntityRequest.md)
- [NSAppointmentAgent](/en/automation/crmscript/reference/CRMScript.NetServer.NSAppointmentAgent.md)
- [SuperOffice.WebApi.Agents.AppointmentAgent](/en/api/reference/webapi/SuperOffice.WebApi.Agents.AppointmentAgent.md)
- [SuperOffice.WebApi.Agents.IAppointmentAgent](/en/api/reference/webapi/SuperOffice.WebApi.Agents.IAppointmentAgent.md)
- [Validate Sale Entity](/en/api/reference/restful/agent/sale_agent/validate-sale-entity.md)
