Appointment Open API

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 11 min. de leitura
  • A Appointment Open API é uma API de telecomunicação que permite que você interaja com o aplicativo de agendamentos. Use esta API para reservar compromissos e pesquisar intervalos de tempo disponíveis.

    A Appointment Open API é uma ServiceNow® implementação da especificação da API REST de compromisso do Open API TMForum TMF646 e tem conformidade certificada pelo TM Fórum. Esta implementação se baseia na especificação REST da API de compromisso TMF646 R16.0.1.

    Logotipo de conformidade do TMF
    Esta API requer os seguintes plug-ins disponíveis no ServiceNow Store.
    • Agendamentos (com.snc.appointment_booking)
    • Gestão de serviços de campo (com.snc.work_management)
    • Gestão de serviços de campo para telecomunicações (com.sn_fsmt)
    • APIs abertas de telecomunicação (com.sn_tmf_api)

    Antes de usar esta API, a configuração de Agendamentos e a configuração de serviço devem ser definidas. Além disso, deve existir uma tarefa para a qual o compromisso está sendo reservado.

    Esta API é fornecida no namespace sn_tmf_api. O usuário de chamada deve ter a função sn_tmf_api.appointment_integrator.

    Compromisso em aberto - GET /api/sn_tmf_api/appointment/searchTimeSlot

    Retorna intervalos de tempo que foram configurados na configuração do serviço de agendamentos junto com sua disponibilidade.

    Formato da URL

    /api/sn_tmf_api/appointment/searchTimeSlot

    Parâmetros de solicitação compatíveis

    Tabela 1. Parâmetros de caminho
    Nome Descrição
    Nenhum(a)
    Tabela 2. Parâmetros de consulta
    Nome Descrição
    catalog_id Obrigatório. Sys_id do produtor de registro configurado com uma configuração de serviço de agendamentos.

    Tipo de dados: cadeia de caracteres

    Tabela: produtor de registro [sc_cat_item_producer]

    end_date Obrigatório. Data e hora de término do período de tempo em que você deseja pesquisar o compromisso.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 12:00:00.

    local Sys_id do local do compromisso.

    Tabela: local [cmn_location]

    Tipo de dados: cadeia de caracteres

    Padrão: retorna todos os locais se não for especificado.

    aberto_para Obrigatório. Sys_id do usuário para o qual o compromisso está sendo reservado.

    Tabela: Contato [customer_contact]

    Tipo de dados: cadeia de caracteres

    start_date Obrigatório. Data e hora de início do período em que você deseja pesquisar o compromisso.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:00:00.

    Tabela 3. Parâmetros do corpo da solicitação
    Nome Descrição
    Nenhum(a)

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 4. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tabela 5. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 6. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    400 Solicitação Incorreta. Foi detectado um tipo de solicitação incorreto ou solicitação malformada.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    availableTimeSlot Lista de slots de compromisso dentro do bloco especificado de tempo solicitado.

    Tipo de dados: matriz de objetos

    'availableTimeSlot': [
     { 
      "available": Boolean,
      "end_date": "String",
      "end_date_display": "String",
      "end_dateUTC": "String",
      "start_date": "String",
      "start_date_display": "String",
      "start_dateUTC": "String"
     }
    ]
    disponívelTempoDeTempo.disponível Sinalizador que indica se o intervalo de tempo associado está disponível.
    Valores possíveis:
    • verdadeiro: o intervalo de tempo está disponível.
    • falso: o intervalo de tempo não está disponível.

    Tipo de dados: booliano

    availableTimeSlot.end_date Data e hora de término do compromisso associado. O fuso horário é baseado no valor no parâmetro timeZone.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    availableTimeSlot.end_date_display Exibir data e hora de término do compromisso associado. O fuso horário é baseado no valor no parâmetro timeZone.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    availableTimeSlot.end_dateUTC Data e hora de término do compromisso associado.

    Tipo de dados: cadeia de caracteres

    Formato: UTC

    disponívelTimeSlot.data_início Data e hora de início do compromisso associado. Reflete o valor do parâmetro timeZone.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    availableTimeSlot.start_date_display Exibir data e hora de início do compromisso associado. Reflete o valor do parâmetro timeZone.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    disponívelTimeSlot.start_dateUTC Data e hora de início do compromisso associado.

    Tipo de dados: cadeia de caracteres

    Formato: UTC

    hasMore Sinalizador que indica se há mais slots de compromisso a serem buscados após o retorno do limite. O limite é especificado na propriedade de Agendamentos, sn_apptmnt_booking.max_appointments_returned (Padrão: 100). Consulte Appointment booking components para obter mais detalhes sobre esta propriedade.
    Valores possíveis:
    • verdadeiro: mais slots de compromisso podem ser obtidos.
    • falso: não há mais slots de compromisso disponíveis.

    Tipo de dados: booliano

    noApptDisponível Sinalizador que indica se há mais slots de compromisso disponíveis para a data e hora especificadas.
    Valores válidos:
    • verdadeiro: há mais slots de compromisso disponíveis para a data e hora especificadas.
    • falso: não há mais slots de compromisso disponíveis para a data e hora especificadas.

    Tipo de dados: booliano

    resultado da pesquisa Resultados de disponibilidade de compromisso dentro do intervalo de tempo de pesquisa designado.
    Valores possíveis:
    • êxito
    • falha

    Tipo de dados: cadeia de caracteres

    status Status de conclusão da pesquisa de intervalos de tempo disponíveis. Por exemplo, concluído.

    Tipo de dados: cadeia de caracteres

    fuso horário Fuso horário usado ao reservar ou atualizar o período de agendamento especificado.

    Tipo de data: cadeia de caracteres

    Formato: formato de país/cidade ou área, como EUA/Leste

    Solicitação de cURL

    O exemplo de código a seguir mostra como chamar este endpoint.

    curl --location --request GET 'https://instance.service-now.com/api/sn_tmf_api/appointment/searchTimeSlot?
    start_date=2024-07-10 09:00:00&end_date=2024-07-20 23:00:00&catalog_id=ada50a93f0220210f8776517d8c8e776&
    opened_for=51670151c35420105252716b7d40ddfe&location=f48b21850a0a0ba7004182b18099696d ' \
    --user 'username':'password'

    Resultado:

    {
      "searchResult": "success",
      "status": "done",
      "availableTimeSlot": [
        {
          "start_date": "2024-07-10 09:00:00",
          "end_date": "2024-07-10 12:00:00",
          "start_date_display": "09:00",
          "end_date_display": "12:00",
          "start_dateUTC": "2024-07-10 16:00:00",
          "end_dateUTC": "2024-07-10 19:00:00",
          "available": false
        },
        {
          "start_date": "2024-07-11 13:00:00",
          "end_date": "2024-07-11 16:00:00",
          "start_date_display": "13:00",
          "end_date_display": "16:00",
          "start_dateUTC": "2024-07-11 20:00:00",
          "end_dateUTC": "2024-07-11 23:00:00",
          "available": true
        },
        {
          "start_date": "2024-07-12 09:00:00",
          "end_date": "2024-07-12 12:00:00",
          "start_date_display": "09:00",
          "end_date_display": "12:00",
          "start_dateUTC": "2024-07-12 16:00:00",
          "end_dateUTC": "2024-07-12 19:00:00",
          "available": true
        },
        {
          "start_date": "2024-07-12 13:00:00",
          "end_date": "2024-07-12 16:00:00",
          "start_date_display": "13:00",
          "end_date_display": "16:00",
          "start_dateUTC": "2024-07-12 20:00:00",
          "end_dateUTC": "2024-07-12 23:00:00",
          "available": true
        },
        {
          "start_date": "2024-07-19 13:00:00",
          "end_date": "2024-07-19 16:00:00",
          "start_date_display": "13:00",
          "end_date_display": "16:00",
          "start_dateUTC": "2024-07-19 20:00:00",
          "end_dateUTC": "2024-07-19 23:00:00",
          "available": true
        }
      ],
      "hasMore": false,
      "noApptAvailable": false,
      "timeZone": "US/Arizona"
    }

    Compromisso em aberto - POST /api/sn_tmf_api/appointment/appointment

    Permite que você marque compromissos para uma ordem de serviço.

    Formato da URL

    /api/sn_tmf_api/appointment/appointment

    Parâmetros de solicitação compatíveis

    Tabela 7. Parâmetros de caminho
    Nome Descrição
    Nenhum(a)
    Tabela 8. Parâmetros de consulta
    Nome Descrição
    Nenhum(a)
    Tabela 9. Parâmetros do corpo da solicitação
    Nome Descrição
    categoria Obrigatório. Sys_id do produtor de registro configurado para a configuração do serviço de agendamentos.

    Tipo de dados: cadeia de caracteres

    Tabela: no campo Item do catálogo da tabela Configuração do serviço de agendamentos [sn_apptmnt_booking_service_config].

    relatedEntity Obrigatório. Lista de ordens de serviço afetadas a serem associadas ao compromisso.

    Tipo de dados: matriz de objetos

    "relatedEntity": [
      {
        "@referredType": "String"
        "id": "String",
      }
    ]
    relatedEntity.@referredType Obrigatório. Tipo de item ou serviço.

    Somente valor válido: WorkOrder

    Tipo de dados: cadeia de caracteres

    Tabela: ordem de serviço [wm_order]

    relatedEntity.id Obrigatório. Sys_id da entidade relacionada.

    Tipo de dados: cadeia de caracteres

    Tabela: workOrder [wm_order]

    Padrão: retorna tudo se o sys_id não for fornecido.

    relatedEntity.role Obrigatório. Descrição da função da entidade relacionada.

    Somente valor válido: ordem de serviço

    Tipo de dados: cadeia de caracteres

    Tabela: ordem de serviço [wm_order]

    relatedParty Obrigatório. Lista de contatos do compromisso. Cada contato é um objeto na matriz. A solicitação deve listar pelo menos um item que contenha informações da conta do cliente.

    Tipo de dados: matriz de objetos

    "relatedParty": [ 
     {
      "@referredType": "String",
      "id": "String",
      "name": "String",
      "role": "String"
     }
    ]
    relatedParty.@referredType Tipo de cliente.

    Somente valor válido: Individual

    Tipo de dados: cadeia de caracteres

    relatedParty.id Obrigatório. Sys_id ou external_id do contato associado à ordem de serviço.

    Tipo de dados: cadeia de caracteres

    Tabela: Contato [customer_contact]

    relatedParty.name Nome do contato.

    Tipo de dados: cadeia de caracteres

    Tabela: Contato [customer_contact]

    relatedParty.role Obrigatório. Função do contato.
    Valores possíveis:
    • cliente: o contato tem uma função de cliente.
    • técnico: o contato tem uma função de técnico.

    Tipo de dados: cadeia de caracteres

    Tabela: Contato [customer_contact]

    relatedPplace Obrigatório. Lista dos locais relacionados ao compromisso.

    Tipo de dados: matriz de objetos

    "relatedPlace": [
     {
      "@referredType": "String",
      "id": "String",
      "name": "String",
      "role": "String"
     }
    ]
    relatedPlace.@referredType Obrigatório. Tipo de local. Por exemplo, Cidade.

    Tipo de dados: cadeia de caracteres

    Tabela: Locais [cmn_location]

    relatedPlace.id Obrigatório. Sys_id do local relacionado.

    Tipo de dados: cadeia de caracteres

    Tabela: Locais [cmn_location]

    relatedPlace.name Nome do local relacionado ao contato. Por exemplo, 251 Reddy St, darwin, CA 93522.

    Tipo de dados: cadeia de caracteres

    Tabela: Locais [cmn_location]

    relatedPlace.role Obrigatório. Descrição da função do local. Por exemplo, ordem de serviço.

    Tipo de dados: cadeia de caracteres

    fuso horário Obrigatório. Fuso horário a ser usado ao reservar o período de compromisso especificado.

    Tipo de data: cadeia de caracteres

    Formato: formato de país/cidade ou área, como EUA/Leste

    validFor Obrigatório. Intervalo de datas para o qual o compromisso é válido.

    Tipo de dados: objeto

    "validFor": {
      "endDateTime": "String",
      "startDateTime": "String"
    }
    validFor.endDateTime Obrigatório. Data e hora de término do intervalo de tempo.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    validFor.startDateTime Obrigatório. Data e hora de início do intervalo de tempo.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 10. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tabela 11. Cabeçalhos de resposta
    Cabeçalho Descrição
    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 12. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    categoria Sys_id do produtor de registro configurado para a configuração do serviço de agendamentos.

    Tipo de dados: cadeia de caracteres

    Armazenado em: campo Item do catálogo da tabela Configuração do serviço de agendamentos [sn_apptmnt_booking_service_config].

    creationDate Data e hora em que o compromisso foi criado.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    href Hiperlink para o registro de compromisso. Use este link em outra solicitação de API de abertura de compromisso para reprogramar ou excluir o compromisso.

    Tipo de dados: cadeia de caracteres

    id Sys_id do compromisso.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Configuração do serviço de agendamentos [sn_apptmnt_booking_service_config]

    últimaAtualização Data e hora em que o compromisso foi atualizado pela última vez.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    relatedEntity Detalhes sobre a entidade relacionada do compromisso.

    Tipo de dados: matriz de objetos

    "relatedEntity": [
     {
      "@referredType": "String",
      "id": "String",
      "role": "String"
      }
    ]
    relatedEntity.@referredType Tipo de item ou serviço.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela workOrder [wm_order]

    relatedEntity.id Sys_id da entidade relacionada.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela workOrder [wm_order]

    relatedEntity.role Descrição da função da entidade relacionada.

    Valor possível: ordem de serviço

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela workOrder [wm_order]

    relatedParty Lista de contatos do compromisso. Cada contato é um objeto na matriz.

    Tipo de dados: matriz de objetos

    "relatedParty": [
     {
      "@referredType": "String",
      "id": "String",
      "name": " String",
      "role": "String"
     }
    ]
    relatedParty.@referredType Tipo de cliente.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Contato [customer_contact]

    relatedParty.id Sys_id do contato do cliente associado à ordem de serviço.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Contato [customer_contact]

    relatedParty.name Nome do contato do cliente.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Contato [customer_contact]

    relatedParty.role Função do contato do cliente.
    Valores possíveis:
    • cliente: o contato tem uma função de cliente.
    • técnico: o contato tem uma função de técnico.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Contato [customer_contact]

    relatedPplace Detalhes do local do compromisso associado.

    Tipo de dados: objeto

    "relatedPlace": {
      "@referredType": "String",
      "id": "String",
      "name": "String",
      "role": "String"
    }
    relatedPlace.@referredType Endereço geográfico do compromisso.

    Valor possível: GeographicLocation.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Local [cmn_location]

    relatedPlace.id Sys_id do local.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Local [cmn_location]

    relatedPlace.name Nome do local relacionado ao contato. Por exemplo, 100SouthCharlesStreet,Baltimore,MD.

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Local [cmn_location]

    relatedPlace.role Função do local do compromisso como um endereço de intervenção.

    Valor possível: InterventionAddress

    Tipo de dados: cadeia de caracteres

    Armazenado em: tabela Local [cmn_location]

    êxito Sinalizador que indica se a solicitação foi bem-sucedida.
    Valores possíveis:
    • verdadeiro: solicitação bem-sucedida.
    • falso: falha na solicitação.

    Tipo de dados: booliano

    fuso horário Fuso horário usado ao reservar ou atualizar o período de agendamento especificado.

    Tipo de data: cadeia de caracteres

    Formato: formato de país/cidade ou área, como EUA/Leste

    validFor Intervalo de datas para o qual o compromisso é válido.

    Tipo de dados: objeto

    "validFor": {
     "endDateTime": "String"
     "startDateTime": "String"
    }
    validFor.endDateTime Data e hora de término do compromisso.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    validFor.startDateTime Data e hora de início do compromisso.

    Tipo de dados: cadeia de caracteres

    Formato: AAAA-MM-DD 00:00:00. Por exemplo, 2025-01-31 09:35:43.

    Solicitação de cURL

    O exemplo a seguir mostra como criar um novo agendamento.

    curl "https://instance.servicenow.com/api/sn_tmf_api/appointment/appointment" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
      \"validFor\": {
        \"startDateTime\": \"2024-08-19 09:00:00\",
        \"endDateTime\": \"2024-08-19 11:00:00\"
      },
      \"category\": \"e4c1116b3b810300ce8a4d72f3efc40f\",
      \"relatedParty\": [
        {
          \"id\": \"eaf68911c35420105252716b7d40ddde\",
          \"name\": \"Sally Thomas\",
          \"role\": \"customer\",
          \"@referredType\": \"Individual\"
        }
      ],
      \"relatedPlace\": {
        \"id\": \"25ab9c4d0a0a0bb300f7dabdc0ca7c1c\",
        \"name\": \"100 South Charles Street, Baltimore,MD\",
        \"role\": \"interventionAddress\",
        \"@referredType\": \"GeographicAddress\"
      },
      \"relatedEntity\": [
        {
          \"id\": \"48dbfbf9201f0250f877303e8a020dcd\",
          \"role\": \"work order\",
          \"@referredType\": \"WorkOrder\"
        }
      ],
      \"timeZone\": \"US/Arizona\"
    }" \
    --user 'username':'password'

    Resposta:

    {
      "validFor": {
        "startDateTime": "2024-07-19 09:00:00",
        "endDateTime": "2024-07-19 11:00:00"
      },
      "category": "e4c1116b3b810300ce8a4d72f3efc40f",
      "relatedParty": [
        {
          "id": "eaf68911c35420105252716b7d40ddde",
          "name": "Sally Thomas",
          "role": "customer",
          "@referredType": "Individual"
        }
      ],
      "relatedPlace": {
        "id": "25ab9c4d0a0a0bb300f7dabdc0ca7c1c",
        "name": "100 South Charles Street, Baltimore,MD",
        "role": "interventionAddress",
        "@referredType": "GeographicAddress"
      },
      "relatedEntity": [
        {
          "id": "48dbfbf9201f0250f877303e8a020dcd",
          "role": "work order",
          "@referredType": "WorkOrder"
        }
      ],
      "timeZone": "US/Arizona",
      "success": true,
      "id": "feacb7f9201f0250f877303e8a020d38",
      "href": "api/sn_tmf_api/appointment/appointment/feacb7f9201f0250f877303e8a020d38",
      "creationDate": "2024-07-10 22:45:01",
      "lastUpdate": "2024-07-10 22:45:01"
    }