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?