Policy API (v2)

Download OpenAPI description
Languages
Servers
Mock server
https://developer.spotnana.com/_mock/openapi/policyapi/
Staging URL
https://apis.spotnana.com/

Company Policies

APIs to configure company travel policies.

Operations

Custom Fields

APIs to manage company custom fields.

Operations

Get company questions

Request

Path
companyIdstring(uuid)required

Identifier for company.

Example: 4974a66b-7493-4f41-908c-58ba81093947
curl -i -X GET \
  'https://developer.spotnana.com/_mock/openapi/policyapi/v2/companies/{companyId}/questions' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Bodyapplication/json
lengthinteger(int32)
elementsArray of objects(Reference object containing uuid and name of the entity.)

List of references containing id and name.

Response
application/json
{ "length": 0, "elements": [ {} ] }

Create company question

Request

Path
companyIdstring(uuid)required

Identifier for company.

Example: 4974a66b-7493-4f41-908c-58ba81093947
Bodyapplication/json
namestringrequired

Question display name that the user will see. For eg, 'Choose the purpose of your trip'.

questionFormatstring(QuestionFormat)required

Question types. INPUT_BOX will make user enter a free flowing text. RADIO_BUTTON will have multiple options, user can select only one. CHECKBOX questions contain the possible set of options, from which the user can choose multiple options. CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference being that each option having an additional input field whose values must add up to 100.

Enum"INPUT_BOX""RADIO_BUTTON""CHECKBOX""CHECKBOX_WITH_PERCENTAGE"
optionInfoobject(OptionInfo)

Options related information for the question.

isRequiredbooleanrequired

Whether its compulsory to answer the question or not.

Default false
Example: true
isDisabledbooleanrequired

Whether the question is disabled or not. If true, this should not be asked.

Default true
Example: false
customFieldLocationsArray of strings(CustomFieldLocation)
Items Enum"POLICY_APPROVAL_EMAIL""PNR_EMAIL""TRIP_EMAIL"
Example: ["POLICY_APPROVAL_EMAIL"]
matchConditionsobject(CustomFieldMatchConditions)

Conditions to select the custom field for given context.

includeInItinerarybooleanDeprecated

Whether to include this question in the itinerary related emails.

Default false
Example: true
curl -i -X POST \
  'https://developer.spotnana.com/_mock/openapi/policyapi/v2/companies/{companyId}/questions' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "string",
    "questionFormat": "CHECKBOX",
    "optionInfo": {
      "source": "MANUAL",
      "sourceMetadata": {
        "companyConfig": {
          "optionsParam": "COST_CENTER"
        }
      },
      "totalNumOptions": 0,
      "options": [
        {
          "displayCode": "string",
          "displayValue": "string"
        }
      ]
    },
    "isRequired": true,
    "isDisabled": false,
    "includeInItinerary": true,
    "customFieldLocations": [
      "POLICY_APPROVAL_EMAIL"
    ],
    "matchConditions": {
      "travelerConditions": {
        "workerTypes": [
          "EMPLOYEE"
        ],
        "countries": [
          "string"
        ],
        "legalEntities": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ],
        "departments": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ],
        "costCenters": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ],
        "offices": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ]
      },
      "travelTypes": [
        "AIR"
      ],
      "travelRegionTypes": [
        "DOMESTIC"
      ],
      "tripUsageTypes": [
        "STANDARD"
      ]
    }
  }'

Responses

OK

Bodyapplication/json
idstring(uuid)required
Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }

Get company question

Request

Path
companyIdstring(uuid)required

Identifier for company.

Example: 4974a66b-7493-4f41-908c-58ba81093947
questionIdstring(uuid)required

Identifier for question.

Example: 1234a66b-7493-4f41-908c-58ba81093947
curl -i -X GET \
  'https://developer.spotnana.com/_mock/openapi/policyapi/v2/companies/{companyId}/questions/{questionId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Bodyapplication/json
idstring(uuid)required
namestringrequired

Question display name that the user will see. For eg, 'Choose the purpose of your trip'.

questionFormatstring(QuestionFormat)

Question types. INPUT_BOX will make user enter a free flowing text. RADIO_BUTTON will have multiple options, user can select only one. CHECKBOX questions contain the possible set of options, from which the user can choose multiple options. CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference being that each option having an additional input field whose values must add up to 100.

Enum"INPUT_BOX""RADIO_BUTTON""CHECKBOX""CHECKBOX_WITH_PERCENTAGE"
optionInfoobject(OptionInfo)

Options related information for the question.

isRequiredbooleanrequired

Whether its compulsory to answer the question or not.

Default false
Example: true
isDisabledbooleanrequired

Whether the question is disabled or not. If true, this should not be asked.

Default true
Example: true
customFieldLocationsArray of strings(CustomFieldLocation)
Items Enum"POLICY_APPROVAL_EMAIL""PNR_EMAIL""TRIP_EMAIL"
Example: ["POLICY_APPROVAL_EMAIL"]
matchConditionsobject(CustomFieldMatchConditions)

Conditions to select the custom field for given context.

questionTypeobject(QuestionType)

Question type.

includeInItinerarybooleanDeprecated

Whether to include this question in the itinerary related emails.

Default false
Example: true
Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "questionFormat": "CHECKBOX", "optionInfo": { "source": "MANUAL", "sourceMetadata": {}, "totalNumOptions": 0, "options": [] }, "isRequired": true, "isDisabled": true, "includeInItinerary": true, "customFieldLocations": [ "POLICY_APPROVAL_EMAIL" ], "matchConditions": { "travelerConditions": {}, "travelTypes": [], "travelRegionTypes": [], "tripUsageTypes": [] }, "questionType": { "preSearchQuestionType": "PURPOSE_OF_TRIP", "preCheckoutQuestionType": "OOP_REASON_CODE" } }

Update company question

Request

Path
companyIdstring(uuid)required

Identifier for company.

Example: 4974a66b-7493-4f41-908c-58ba81093947
questionIdstring(uuid)required

Identifier for question.

Example: 1234a66b-7493-4f41-908c-58ba81093947
Bodyapplication/json
idstring(uuid)required
namestringrequired

Question display name that the user will see. For eg, 'Choose the purpose of your trip'.

questionFormatstring(QuestionFormat)

Question types. INPUT_BOX will make user enter a free flowing text. RADIO_BUTTON will have multiple options, user can select only one. CHECKBOX questions contain the possible set of options, from which the user can choose multiple options. CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference being that each option having an additional input field whose values must add up to 100.

Enum"INPUT_BOX""RADIO_BUTTON""CHECKBOX""CHECKBOX_WITH_PERCENTAGE"
optionInfoobject(OptionInfo)

Options related information for the question.

isRequiredbooleanrequired

Whether its compulsory to answer the question or not.

Default false
Example: true
isDisabledbooleanrequired

Whether the question is disabled or not. If true, this should not be asked.

Default true
Example: true
customFieldLocationsArray of strings(CustomFieldLocation)
Items Enum"POLICY_APPROVAL_EMAIL""PNR_EMAIL""TRIP_EMAIL"
Example: ["POLICY_APPROVAL_EMAIL"]
matchConditionsobject(CustomFieldMatchConditions)

Conditions to select the custom field for given context.

questionTypeobject(QuestionType)

Question type.

includeInItinerarybooleanDeprecated

Whether to include this question in the itinerary related emails.

Default false
Example: true
curl -i -X PUT \
  'https://developer.spotnana.com/_mock/openapi/policyapi/v2/companies/{companyId}/questions/{questionId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "name": "string",
    "questionFormat": "CHECKBOX",
    "optionInfo": {
      "source": "MANUAL",
      "sourceMetadata": {
        "companyConfig": {
          "optionsParam": "COST_CENTER"
        }
      },
      "totalNumOptions": 0,
      "options": [
        {
          "displayCode": "string",
          "displayValue": "string"
        }
      ]
    },
    "isRequired": true,
    "isDisabled": true,
    "includeInItinerary": true,
    "customFieldLocations": [
      "POLICY_APPROVAL_EMAIL"
    ],
    "matchConditions": {
      "travelerConditions": {
        "workerTypes": [
          "EMPLOYEE"
        ],
        "countries": [
          "string"
        ],
        "legalEntities": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ],
        "departments": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ],
        "costCenters": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ],
        "offices": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string"
          }
        ]
      },
      "travelTypes": [
        "AIR"
      ],
      "travelRegionTypes": [
        "DOMESTIC"
      ],
      "tripUsageTypes": [
        "STANDARD"
      ]
    },
    "questionType": {
      "preSearchQuestionType": "PURPOSE_OF_TRIP",
      "preCheckoutQuestionType": "OOP_REASON_CODE"
    }
  }'

Responses

OK

Response
application/json
{ "debugIdentifier": "string", "errorMessages": [ {} ] }

Delete company question

Request

Path
companyIdstring(uuid)required

Identifier for company.

Example: 4974a66b-7493-4f41-908c-58ba81093947
questionIdstring(uuid)required

Identifier for question.

Example: 1234a66b-7493-4f41-908c-58ba81093947
curl -i -X DELETE \
  'https://developer.spotnana.com/_mock/openapi/policyapi/v2/companies/{companyId}/questions/{questionId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Response
application/json
{ "debugIdentifier": "string", "errorMessages": [ {} ] }