General Questions

Q1: What is this API for?

  • This API is designed to validate and process parameters according to a predefined schema for Information and Communication Technology (ICT) procurement.

Q2: How do I authenticate with the API?

  • Currently, the API does not require authentication. Please refer to future updates for any changes in authentication requirements.

Endpoint Questions

Q3: What endpoints are available in this API?

  • /v1/getRequestSchema: Retrieves the schema for a request.
  • /v1/get508Languages: Retrieves matched 508 languages for a proposed Information and Communication Technology (ICT).

Q4: What parameters can I use with the /v1/getRequestSchema endpoint?

  • field_name (optional): A query parameter to filter the schema based on the field name.

Q5: What is the structure of the request body for the /v1/get508Languages endpoint?

  • The request body is a JSON object that includes various fields such as solicitation_phase, ict_type, electronic_content, software_group, hardware_group, and support. Refer to the detailed schema for specific fields and their types.

Validation Questions

Q6: What happens if a required parameter is missing?

  • The API will return a validation error indicating which required parameter is missing.

Q7: What type of validation errors can I expect?

  • Missing required parameters.
  • Invalid parameter values.
  • Required parameters based on other parameter values (required_if conditions).
  • Extra parameters that are not allowed.
  • Custom validation errors based on business rules.

Q8: How are validation errors returned?

  • Validation errors are returned as an array of error messages along with an HTTP status code of 400.

Specific Validation Rules

Q9: Can electronic_content be an empty object?

  • No, electronic_content cannot be an empty object if it is provided. If it is provided, it must contain valid subfields.

Q10: How is the software_group.software_criteria field validated?

  • software_group.software_criteria must be a non-empty array.
  • It can contain the value 'idk' only if it is the single value in the array.
  • Other valid values include 'assistive-technology' and 'no-user-interface'.

Q11: Can software_group.software_purchase be populated?

  • software_group.software_purchase can only be populated if software_group.software_criteria is non-existent or has the value ['idk'].

Q12: What are the rules for software_group.cloud_services?

  • software_group.cloud_services can only be provided if software_group.software_purchase is not empty.
  • When software_group.cloud_services is provided, software_group.software_web and software_group.create_electronic_content are required.

Q13: When is hardware_group.server_iaas required?

  • requiredhardware_group.server_iaas is required when hardware_group.hardware_items contains 'server'.
  • It cannot be provided when hardware_group.hardware_items does not contain 'server'.

Error Messages

Q14: What are the possible error messages?

  • "Required parameter '${entry.name}' is missing."
  • "Parameter '${entry.name}' has an invalid value."
  • "Parameter '${entry.name}' is required when '${dependentParam}' is '${expectedValue}'."
  • "Extra parameter '${fullKey}' is not allowed."
  • "'electronic_content' can have only one true value. Found multiple true values: ${trueValues.join(', ')}."
  • "'electronic_content' cannot be an empty object."
  • "'software_group.software_criteria' must be a non-empty array."
  • "'software_group.software_criteria' can only contain 'idk' as a single value."
  • "'software_group.software_criteria' contains invalid values: ${invalidValues.join(', ')}."
  • "'software_group.software_purchase' can only be populated if 'software_group.software_criteria' is non-existent or has the value ['idk']."
  • "'software_group.cloud_services' can only be provided if 'software_group.software_purchase' is not empty."
  • "'software_group.software_web' and 'software_group.create_electronic_content' are required when 'software_group.cloud_services' is provided."
  • "'hardware_group.server_iaas' is required when 'hardware_group.hardware_items' contains 'server'."
  • "'hardware_group.server_iaas' cannot be provided when 'hardware_group.hardware_items' does not contain 'server'."

Documentations

Q15: Where can I read documentations for this API?