CSB — Clean School Bus Rebate Forms

Internal-facing API for the Clean School Bus rebate program — eligibility, applications, and award tracking.

OpenAPI Specification

csb-rebate-openapi.json Raw ↑
{
  "openapi": "3.0.0",
  "info": {
    "title": "epa-csb-server",
    "version": "8.1.0",
    "license": {
      "name": "CC0-1.0"
    },
    "description": "U.S. EPA CSB Rebate Forms Application"
  },
  "paths": {
    "/login": {
      "get": {
        "summary": "/login",
        "responses": {
          "302": {
            "description": "Found"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/login/assert": {
      "post": {
        "summary": "/login/assert",
        "parameters": [],
        "responses": {
          "302": {
            "description": "Found",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string",
                  "example": "<p>Found. Redirecting to <a href=\"http://localhost:3000/\">http://localhost:3000/</a></p>"
                },
                "examples": {
                  "post_login_assert302Example": {
                    "summary": "Default post_login_assert 302 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/login/fail": {
      "get": {
        "summary": "/login/fail",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/logout": {
      "get": {
        "summary": "/logout",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/logout/callback": {
      "get": {
        "summary": "/logout/callback",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      },
      "post": {
        "summary": "/logout/callback",
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "tags": [],
        "parameters": [],
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/metadata": {
      "get": {
        "summary": "/metadata",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "get_metadata200Example": {
                    "summary": "Default get_metadata 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/user": {
      "get": {
        "summary": "Get user data from EPA Gateway/Login.gov.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "An object with a user's data from EPA Gateway/Login.gov.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "mail": {
                      "type": "string",
                      "example": "[email protected]"
                    },
                    "memberof": {
                      "type": "string",
                      "example": "csb_admin,csb_helpdesk"
                    },
                    "exp": {
                      "type": "number",
                      "example": 1661376902
                    }
                  }
                },
                "examples": {
                  "get_api_user200Example": {
                    "summary": "Default get_api_user 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/config/public": {
      "get": {
        "summary": "Get CSB App Specific Public Configuration (csb App Login Status and Static Content)",
        "parameters": [],
        "responses": {
          "200": {
            "description": "CSB app login status and static content from S3.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "loginEnabled": {
                      "type": "boolean",
                      "example": true
                    },
                    "staticContent": {
                      "type": "object"
                    }
                  }
                },
                "examples": {
                  "get_api_config_public200Example": {
                    "summary": "Default get_api_config_public 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/config/private": {
      "get": {
        "summary": "Get CSB App Specific Private Configuration (form Open Enrollment Status, Etc.)",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Formio base URL and project name, CSB rebate year and open enrollment status.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "formioBaseUrl": {
                      "type": "string",
                      "example": "https://api.form.io"
                    },
                    "formioProjectName": {
                      "type": "string",
                      "example": "forms"
                    },
                    "formioPremiumKey": {
                      "type": "string",
                      "example": "secret"
                    },
                    "rebateYear": {
                      "type": "string",
                      "example": "2024"
                    },
                    "submissionPeriodOpen": {
                      "type": "object",
                      "properties": {
                        "2022": {
                          "type": "object",
                          "properties": {
                            "frf": {
                              "type": "boolean",
                              "example": true
                            },
                            "prf": {
                              "type": "boolean",
                              "example": true
                            },
                            "crf": {
                              "type": "boolean",
                              "example": true
                            }
                          }
                        },
                        "2023": {
                          "type": "object",
                          "properties": {
                            "frf": {
                              "type": "boolean",
                              "example": true
                            },
                            "prf": {
                              "type": "boolean",
                              "example": true
                            },
                            "crf": {
                              "type": "boolean",
                              "example": true
                            }
                          }
                        },
                        "2024": {
                          "type": "object",
                          "properties": {
                            "frf": {
                              "type": "boolean",
                              "example": true
                            },
                            "prf": {
                              "type": "boolean",
                              "example": true
                            },
                            "crf": {
                              "type": "boolean",
                              "example": true
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "get_api_config_private200Example": {
                    "summary": "Default get_api_config_private 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/bap/sam": {
      "get": {
        "summary": "Get User's SAM.gov Data from the BAP.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "A boolean indicating whether any SAM.gov results were returned (to support helpdesk users without SAM.gov entities), along with an array of SAM.gov entities.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "boolean",
                      "example": true
                    },
                    "entities": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                },
                "examples": {
                  "get_api_bap_sam200Example": {
                    "summary": "Default get_api_bap_sam 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/bap/submissions": {
      "get": {
        "summary": "Get User's Form Submissions Statuses from the BAP.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "An array of form submission statuses, and other relevant fields.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "examples": {
                  "get_api_bap_submissions200Example": {
                    "summary": "Default get_api_bap_submissions 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/district/{rebateId}": {
      "get": {
        "summary": "Get the School District Info Associated with a Provided CSB Rebate ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/rebateId"
          }
        ],
        "responses": {
          "200": {
            "description": "An object containing school district info associated with the CSB Rebate ID.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "get_api_formio_2022_district_{rebateId}200Example": {
                    "summary": "Default get_api_formio_2022_district_{rebateId} 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/s3/{formType}/{mongoId}/{comboKey}/storage/s3": {
      "get": {
        "summary": "Download Formio File Attachment from S3 for a 2022 Submission.",
        "parameters": [
          {
            "$ref": "#/components/parameters/formType"
          },
          {
            "$ref": "#/components/parameters/mongoId"
          },
          {
            "$ref": "#/components/parameters/comboKey"
          },
          {
            "$ref": "#/components/parameters/bucket"
          },
          {
            "$ref": "#/components/parameters/key"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      },
      "post": {
        "summary": "Upload Formio File Attachment to S3 for a 2022 Submission.",
        "parameters": [
          {
            "$ref": "#/components/parameters/formType"
          },
          {
            "$ref": "#/components/parameters/mongoId"
          },
          {
            "$ref": "#/components/parameters/comboKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      },
      "delete": {
        "summary": "Delete Formio File Attachment from S3 for a 2022 Submission.",
        "parameters": [
          {
            "$ref": "#/components/parameters/formType"
          },
          {
            "$ref": "#/components/parameters/mongoId"
          },
          {
            "$ref": "#/components/parameters/comboKey"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/pdf/{formType}/{mongoId}": {
      "get": {
        "summary": "Download a PDF of a 2022 Form Submission.",
        "parameters": [
          {
            "$ref": "#/components/parameters/formType"
          },
          {
            "$ref": "#/components/parameters/mongoId"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/frf-submissions": {
      "get": {
        "summary": "Get User's 2022 FRF Submissions from Formio.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "An array of 2022 FRF submissions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "examples": {
                  "get_api_formio_2022_frf-submissions200Example": {
                    "summary": "Default get_api_formio_2022_frf-submissions 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/frf-submission": {
      "post": {
        "summary": "Post a New 2022 FRF Submission to Formio.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "The newly created 2022 FRF submission.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "post_api_formio_2022_frf-submission200Example": {
                    "summary": "Default post_api_formio_2022_frf-submission 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/frf-submission/{mongoId}": {
      "get": {
        "summary": "Get an Existing 2022 FRF's Schema and Submission Data from Formio.",
        "parameters": [
          {
            "$ref": "#/components/parameters/mongoId"
          }
        ],
        "responses": {
          "200": {
            "description": "The 2022 FRF schema, form submission, and user access status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FormioSchemaAndSubmission"
                },
                "examples": {
                  "get_api_formio_2022_frf-submission_{mongoId}200Example": {
                    "summary": "Default get_api_formio_2022_frf-submission_{mongoId} 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      },
      "post": {
        "summary": "Post an Update to an Existing Draft 2022 FRF Submission to Formio.",
        "parameters": [
          {
            "$ref": "#/components/parameters/mongoId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated 2022 FRF submission.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "post_api_formio_2022_frf-submission_{mongoId}200Example": {
                    "summary": "Default post_api_formio_2022_frf-submission_{mongoId} 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/prf-submissions": {
      "get": {
        "summary": "Get User's 2022 PRF Submissions from Formio.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "An array of 2022 PRF submissions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "examples": {
                  "get_api_formio_2022_prf-submissions200Example": {
                    "summary": "Default get_api_formio_2022_prf-submissions 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/prf-submission": {
      "post": {
        "summary": "Post a New 2022 PRF Submission to Formio.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "The newly created 2022 PRF submission.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "post_api_formio_2022_prf-submission200Example": {
                    "summary": "Default post_api_formio_2022_prf-submission 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/prf-submission/{rebateId}": {
      "get": {
        "summary": "Get an Existing 2022 PRF's Schema and Submission Data from Formio.",
        "parameters": [
          {
            "$ref": "#/components/parameters/rebateId"
          }
        ],
        "responses": {
          "200": {
            "description": "The 2022 PRF schema, form submission, and user access status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FormioSchemaAndSubmission"
                },
                "examples": {
                  "get_api_formio_2022_prf-submission_{rebateId}200Example": {
                    "summary": "Default get_api_formio_2022_prf-submission_{rebateId} 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      },
      "post": {
        "summary": "Post an Update to an Existing Draft 2022 PRF Submission to Formio.",
        "parameters": [
          {
            "$ref": "#/components/parameters/rebateId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated 2022 PRF submission.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "post_api_formio_2022_prf-submission_{rebateId}200Example": {
                    "summary": "Default post_api_formio_2022_prf-submission_{rebateId} 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/delete-prf-submission": {
      "post": {
        "summary": "Delete an Existing 2022 PRF Submission from Formio.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/crf-submissions": {
      "get": {
        "summary": "Get User's 2022 CRF Submissions from Formio.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "An array of 2022 CRF submissions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "examples": {
                  "get_api_formio_2022_crf-submissions200Example": {
                    "summary": "Default get_api_formio_2022_crf-submissions 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/crf-submission": {
      "post": {
        "summary": "Post a New 2022 CRF Submission to Formio.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "The newly created 2022 CRF submission.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "post_api_formio_2022_crf-submission200Example": {
                    "summary": "Default post_api_formio_2022_crf-submission 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      }
    },
    "/api/formio/2022/crf-submission/{rebateId}": {
      "get": {
        "summary": "Get an Existing 2022 CRF's Schema and Submission Data from Formio.",
        "parameters": [
          {
            "$ref": "#/components/parameters/rebateId"
          }
        ],
        "responses": {
          "200": {
            "description": "The 2022 CRF schema, form submission, and user access status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FormioSchemaAndSubmission"
                },
                "examples": {
                  "get_api_formio_2022_crf-submission_{rebateId}200Example": {
                    "summary": "Default get_api_formio_2022_crf-submission_{rebateId} 200 response",
                    "x-microcks-default": true,
                    "value": {
                      "status": "ok",
                      "message": "Example response"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-microcks-operation": {
          "delay": 0,
          "dispatcher": "FALLBACK"
        }
      },
      "post": {
        "summary": "Post an Update to an Existing Draft 2022 CRF Submission to Formio.",
        "parameters": [
          {
            "$ref": "#/components/parameters/rebateId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated 2022 CRF

# --- truncated at 32 KB (94 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/openapi/csb-rebate-openapi.json