nci-ats/fs-middlelayer-api

View on GitHub
src/api.json

Summary

Maintainability
Test Coverage
{
  "swagger": "2.0",
  "info": {
    "description": "This page is for developers. We built this site entirely off the APIs below and we want to share them with you.",
    "version": "1.0.1",
    "title": "API Documentation for Developers"
  },
  "tags": [
    {
      "name": "  ",
      "description": "Forest Service ePermit API"
    }
  ],
  "securityDefinitions": {
     "access_token": {
      "type": "apiKey",
      "name": "accessToken",
      "in": "header"
     }
   },
  "paths": {
    "/auth": {
      "post": {
        "tags": [
          "Authorization Request"
        ],
        "summary": "Authorization Request",
        "description": "",
        "consumes": [
          "application/x-www-form-urlencoded",
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
             "name": "username",
             "in": "formData",
             "description": "Username",
             "required": true,
             "type": "string"
          },
          {

             "name": "password",
             "in": "formData",
             "description": "Password",
             "required": true,
             "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        }
      }
    },
    "/permits/applications/special-uses/noncommercial/{controlNumber}/": {
      "get": {
        "x-mockOutput":"test/data/basicGET.json",
        "x-getTemplate":{
          "controlNumber":{"default":"", "intake":"accinstCn"},
          "region": {"default":"", "intake":"middleLayer/region"},
          "forest": {"default":"", "intake":"middleLayer/forest"},
          "district": {"default":"", "intake":"middleLayer/district"},
          "authorizingOfficerName": {"default":"", "intake":"authOfficerName"},
          "authorizingOfficerTitle": {"default":"", "intake":"authOfficerTitle"},
          "adminOrg": {"default":"", "intake":"adminOrg"},
          "applicantInfo": {
            "contactControlNumber":{"default":"", "intake":"addresses/contCn"},
            "firstName": {"default":"", "intake":"firstName"},
            "lastName": {"default":"", "intake":"lastName"},
            "dayPhone": {
                "areaCode": {"default":0, "intake":"phones/areaCode"},
                "number": {"default":0, "intake":"phones/phoneNumber"},
                "extension": {"default":"", "intake":"phones/extension"},
                "phoneType": {"default":"", "intake":"phones/phoneNumberType"}
            },
            "eveningPhone": {
                "areaCode": {"default":0, "intake":"phones/areaCode"},
                "number": {"default":0, "intake":"phones/phoneNumber"},
                "extension": {"default":"", "intake":"phones/extension"},
                "phoneType": {"default":"", "intake":"phones/phoneNumberType"}
            },
            "emailAddress": {"default":"", "intake":"addresses/email"},
            "mailingAddress": {"default":"", "intake":"addresses/address1"},
            "mailingAddress2": {"default":"", "intake":"addresses/address2"},
            "mailingCity": {"default":"", "intake":"addresses/cityName"},
            "mailingState": {"default":"", "intake":"addresses/stateCode"},
            "mailingZIP": {"default":"", "intake":"addresses/postalCode"},
            "organizationName": {"default":"", "intake":"addresses/contName"},
            "website": {"default":"", "intake":"middleLayer/website"},
            "orgType": {"default":"", "intake":"orgType"}
          },
          "noncommercialFields": {
            "activityDescription": {"default":"", "intake":"middleLayer/activityDescription"},
            "locationDescription": {"default":"", "intake":"middleLayer/locationDescription"},
            "startDateTime": {"default":"", "intake":"middleLayer/startDatetime"},
            "endDateTime": {"default":"", "intake":"middleLayer/endDatetime"},
            "numberParticipants": {"default":0, "intake":"middleLayer/numberParticipants"},
            "numberSpectators": {"default":0, "intake":"middleLayer/numberSpectators"}
          }
        },
        "tags": [
          "Noncommercial Permit"
        ],
        "summary": "Find noncommercial permit by ID",
        "description": "Returns a single permit",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "controlNumber",
            "in": "path",
            "description": "ID of noncommercial permit to return",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "x-access-token",
            "in": "header",
            "description": "access token",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "schema": {
              "$ref": "#/definitions/noncommercialPermitGet"
            }
          },
          "400": {
            "description": "Invalid ID supplied"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Permit not found"
          }
        }
      }
    },
    "/permits/applications/special-uses/noncommercial/": {
      "post": {
        "x-validation":"controllers/validation.json#noncommercialApplication",
        "tags": [
          "Noncommercial Permit"
        ],
        "summary": "Submit a new noncommercial permit",
        "description": "",
        "operationId": "createPermit",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "noncommercial permit information",
            "required": true,
            "schema": {
              "$ref": "#/definitions/noncommercialPermit"
            }
          },
          {
            "name": "x-access-token",
            "in": "header",
            "description": "access token",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        }
      }
    },
    "/permits/applications/special-uses/commercial/temp-outfitters/{controlNumber}/": {
      "get": {
        "x-mockOutput":"test/data/basicGET.json",
        "x-getTemplate":{
          "controlNumber":{"default":"", "intake":"accinstCn"},
          "region": {"default":"", "intake":"middleLayer/region"},
          "forest": {"default":"", "intake":"middleLayer/forest"},
          "district": {"default":"", "intake":"middleLayer/district"},
          "authorizingOfficerName": {"default":"", "intake":"authOfficerName"},
          "authorizingOfficerTitle": {"default":"", "intake":"authOfficerTitle"},
          "adminOrg": {"default":"", "intake":"adminOrg"},
          "applicantInfo": {
            "contactControlNumber":{"default":"", "intake":"addresses/contCn"},
            "firstName": {"default":"", "intake":"firstName"},
            "lastName": {"default":"", "intake":"lastName"},
            "dayPhone": {
              "areaCode": {"default":0, "intake":"phones/areaCode"},
              "number": {"default":0, "intake":"phones/phoneNumber"},
              "extension": {"default":0, "intake":"phones/extension"},
              "phoneType": {"default":"", "intake":"phones/phoneNumberType"}
            },
            "eveningPhone": {
              "areaCode": {"default":0, "intake":"phones/areaCode"},
              "number": {"default":0, "intake":"phones/phoneNumber"},
              "extension": {"default":0, "intake":"phones/extension"},
              "phoneType": {"default":"", "intake":"phones/phoneNumberType"}
            },
            "emailAddress": {"default":"", "intake":"addresses/email"},
            "mailingAddress": {"default":"", "intake":"addresses/address1"},
            "mailingAddress2": {"default":"", "intake":"addresses/address2"},
            "mailingCity": {"default":"", "intake":"addresses/cityName"},
            "mailingState": {"default":"", "intake":"addresses/stateCode"},
            "mailingZIP": {"default":0, "intake":"addresses/postalCode"},
            "organizationName": {"default":"", "intake":"addresses/contName"},
            "website": {"default":"", "intake":"middleLayer/website"},
            "orgType": {"default":"", "intake":"orgType"}
          },
          "tempOutfitterFields": {
            "individualIsCitizen": {"default":false, "intake":"middleLayer/individualIsCitizen"},
            "smallBusiness": {"default":false, "intake":"middleLayer/smallBusiness"},
            "activityDescription": {"default":"", "intake":"middleLayer/activityDescription"},
            "advertisingURL": {"default":"", "intake":"middleLayer/advertisingUrl"},
            "advertisingDescription":{"default":"", "intake":"middleLayer/advertisingDescription"},
            "clientCharges":{"default":"", "intake":"middleLayer/clientCharges"},
            "experienceList":{"default":"", "intake":"middleLayer/experienceList"},
            "guideDocumentation": {"default":"", "intake":"middleLayer/guideDocumentation"},
            "acknowledgementOfRiskForm": {"default":"", "intake":"middleLayer/acknowledgementOfRiskForm"},
            "insuranceCertificate": {"default":"", "intake":"middleLayer/insuranceCertificate"},
            "goodStandingEvidence": {"default":"", "intake":"middleLayer/goodStandingEvidence"},
            "operatingPlan": {"default":"", "intake":"middleLayer/operatingPlan"}
          }
        },
        "tags": [
          "Outfitter and Guide Permit"
        ],
        "summary": "Find temp-outfitter permit by ID",
        "description": "Returns a single permit",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "controlNumber",
            "in": "path",
            "description": "ID of temp-outfitter permit to return",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "x-access-token",
            "in": "header",
            "description": "access token",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "schema": {
              "$ref": "#/definitions/tempOutfitterPermitGet"
            }
          },
          "400": {
            "description": "Invalid ID supplied"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Permit not found"
          }
        }
      }
    },
    "/permits/applications/special-uses/commercial/temp-outfitters/{controlNumber}/files/": {
      "get": {
        "tags": [
          "Outfitter and Guide Permit"
        ],
        "summary": "Get files in zip format of Outfitter and Guide Permit",
        "description": "",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/zip"
        ],
        "parameters": [
          {
            "name": "controlNumber",
            "in": "path",
            "description": "Control Number of temp-outfitter permit",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "x-access-token",
            "in": "header",
            "description": "access token",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
             "schema": {
               "type": "file"
             }
          },
          "400": {
            "description": "Invalid controlNumber supplied"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Permit not found"
          }
        }
      }
    },
    "/permits/applications/special-uses/commercial/temp-outfitters/{controlNumber}/files/{fileName}": {
      "get": {
        "tags": [
          "Outfitter and Guide Permit"
        ],
        "summary": "Get files of Outfitter and Guide Permit",
        "description": "",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json",
          "application/pdf",
          "text/rtf",
          "application/msword",
          "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
          "application/octet-stream"
        ],
        "parameters": [
          {
            "name": "controlNumber",
            "in": "path",
            "description": "Control Number of temp-outfitter permit",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "fileName",
            "in": "path",
            "description": "File Name",
            "required": true,
            "type": "string"
          },
          {
            "name": "x-access-token",
            "in": "header",
            "description": "access token",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
             "schema": {
               "type": "file"
             }
          },
          "400": {
            "description": "Invalid controlNumber or fileName supplied"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Permit or File not found"
          }
        }
      }
    },
    "/permits/applications/special-uses/commercial/temp-outfitters/": {
      "post": {
        "x-validation":"controllers/validation.json#tempOutfitterApplication",
        "tags": [
          "Outfitter and Guide Permit"
        ],
        "summary": "Submit a new temp-outfitter permit",
        "description": "",
        "consumes": [
          "multipart/form-data"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "formData",
            "name": "body",
            "description": "temp-outfitter permit information",
            "schema": {
              "$ref": "#/definitions/tempOutfitterPermit"   
            },
            "type":"string",
            "required": true
          },
          {
            "in": "formData",
            "name": "guideDocumentation",
            "description": "temp-outfitter guideDocumentation file upload",
            "type": "file"
          },
          {
            "in": "formData",
            "name": "acknowledgementOfRiskForm",
            "description": "temp-outfitter acknowledgementOfRiskForm file upload",
            "type": "file"
          },
          {
            "in": "formData",
            "name": "insuranceCertificate",
            "description": "temp-outfitter insuranceCertificate file upload",
            "required": true,
            "type": "file"
          },
          {
            "in": "formData",
            "name": "goodStandingEvidence",
            "description": "temp-outfitter goodStandingEvidence file upload",
            "required": true,
            "type": "file"
          },
          {
            "in": "formData",
            "name": "operatingPlan",
            "description": "temp-outfitter operatingPlan file upload",
            "required": true,
            "type": "file"
          },
          {
            "name": "x-access-token",
            "in": "header",
            "description": "access token",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        }
      }
    }
  },
  "definitions": {
      "applicantInfoNoncommercial": {
      "type": "object",
      "properties": {
        "firstName": { "type": "string" },
        "lastName": { "type": "string" },
        "dayPhone": { "$ref": "#/definitions/phoneNumber" },
        "eveningPhone": { "$ref": "#/definitions/phoneNumber" },
        "emailAddress": { "type": "string" },
        "mailingAddress": { "type": "string" },
        "mailingAddress2": { "type": "string" },
        "mailingCity": { "type": "string" },
        "mailingState": { "type": "string" },
        "mailingZIP": { "type": "string" },
        "organizationName": { "type": "string"},
        "website":{"type": "string"},
        "orgType":{
          "type":"string",
          "enum":[
            "Association",
            "Corporation",
            "Education",
            "Federal Government",
            "State Government",
            "Local Govt",
            "Married Common Property",
            "Limited Liability Company (LLC)",
            "Limited Liability Partnership (LLP)",
            "Person",
            "Trust"
          ]
        }
      },
      "required": ["firstName","lastName","dayPhone","emailAddress","mailingAddress","mailingCity","mailingZIP","mailingState"],
      "xml": {
        "name": "applicantInfoNoncommercial"
      }
    },
    "applicantInfoTempOutfitter": {
      "type": "object",
      "properties": {
        "firstName": { "type": "string" },
        "lastName": { "type": "string" },
        "dayPhone": { "$ref": "#/definitions/phoneNumber" },
        "eveningPhone": { "$ref": "#/definitions/phoneNumber" },
        "emailAddress": { "type": "string" },
        "mailingAddress": { "type": "string" },
        "mailingAddress2": { "type": "string" },
        "mailingCity": { "type": "string" },
        "mailingState": { "type": "string" },
        "mailingZIP": { "type": "string" },
        "organizationName": { "type": "string" },
        "website":{"type": "string"},
        "orgType":{
          "type":"string",
          "description":"Organization Type",
          "enum":[
            "Association",
            "Corporation",
            "Education",
            "Federal Government",
            "State Government",
            "Local Govt",
            "Married Common Property",
            "Limited Liability Company (LLC)",
            "Limited Liability Partnership (LLP)",
            "Person",
            "Trust"
          ]
        }
      },
      "required": ["firstName","lastName","dayPhone","emailAddress","mailingAddress","mailingCity","mailingZIP","mailingState","orgType"],
      "xml": {
        "name": "applicantInfoTempOutfitter"
      }
    },
    "phoneNumber": {
      "type": "object",
      "properties": {
        "areaCode": { "type": "integer"},
        "number": { "type": "integer"},
        "extension": { "type": "string"},
        "phoneType": {"type": "string"}
      },
      "required": ["areaCode","number","phoneType"],
      "xml": {
        "name": "phoneNumber"
      }
    },
    "noncommercialFields": {
      "type": "object",
      "properties": {
       "activityDescription": { "type": "string"},
       "locationDescription": {  "type": "string"},
       "startDateTime": { "type": "string"},
       "endDateTime": { "type": "string"},
       "numberParticipants" : { "type": "integer"},
       "numberSpectators" : { "type": "integer"}
      },
      "required": ["activityDescription","locationDescription","startDateTime","endDateTime","numberParticipants"],
      "xml": {
        "name": "noncommercialFields"
      }
    },
    "tempOutfitterFields": {
      "type": "object",
      "properties": {
      "individualIsCitizen": {"type":"boolean"},
      "smallBusiness": {"type":"boolean"},
      "activityDescription": { "type": "string"},
      "advertisingURL": { "type": "string"},
      "advertisingDescription": { "type": "string"},
      "clientCharges": { "type": "string"},
      "experienceList": { "type": "string"}
      },
      "required": ["activityDescription","clientCharges","insuranceCertificate","goodStandingEvidence","operatingPlan"],
      "xml": {
        "name": "tempOutfitterFields"
      }
    },
    "noncommercialPermit": {
      "type": "object",
      "properties": {
        "region": { "type" : "string" },
        "forest": { "type" : "string" },
        "district": { "type" : "string" },
        "authorizingOfficerName": { "type" : "string" },
        "authorizingOfficerTitle": { "type" : "string" },
        "applicantInfo": {
          "$ref": "#/definitions/applicantInfoNoncommercial"
        },
        "type": {
          "type": "string",
          "enum":[
            "noncommercial",
            "tempOutfitters"
          ],
          "default": "noncommercial"
        },
        "noncommercialFields": {
          "$ref": "#/definitions/noncommercialFields"
        }
      },
      "required": ["region","forest","district","applicantInfo","type","noncommercialFields"],
      "xml": {
        "name": "noncommercialPermit"
      }
    },
    "noncommercialPermitGet": {
      "type": "object",
      "properties": {
        "controlNumber": {"type": "integer"},
        "region": { "type" : "string" },
        "forest": { "type" : "string" },
        "district": { "type" : "string" },
        "authorizingOfficerName": { "type" : "string"},
        "authorizingOfficerTitle": { "type" : "string"},
        "applicantInfo": {
          "$ref": "#/definitions/applicantInfoNoncommercial"
        },
        "type": {
          "type": "string", 
          "default": "noncommercial",
          "enum":[
            "noncommercial"
          ]
        },
        "noncommercialFields": {
          "$ref": "#/definitions/noncommercialFields"
        }
      },
      "required": ["controlNumber","region","forest","district","applicantInfo","type","noncommercialFields"],
      "xml": {
        "name": "noncommercialPermitGet"
      }
    },
    "tempOutfitterPermit": {
      "type": "object",
       "properties": {
        "region": { "type" : "string" },
        "forest": { "type" : "string" },
        "district": { "type" : "string" },
        "authorizingOfficerName": { "type" : "string"},
        "authorizingOfficerTitle": { "type" : "string"},
        "applicantInfo": {
          "$ref": "#/definitions/applicantInfoTempOutfitter"
        },
        "type": {
          "type": "string", 
          "enum":[
            "tempOutfitters",
            "noncommercial"
          ],
          "default": "tempOutfitters"
        },
        "tempOutfitterFields": {
          "$ref": "#/definitions/tempOutfitterFields"
        }
       },
       "required": ["region","forest","district","applicantInfo","type","tempOutfitterFields"],
      "xml": {
        "name": "tempOutfitterPermit"
      }
    },
    "tempOutfitterPermitGet": {
      "type": "object",
       "properties": {
        "controlNumber": { "type": "integer"},
        "region": { "type" : "string" },
        "forest": { "type" : "string" },
        "district": { "type" : "string" },
        "authorizingOfficerName": { "type" : "string"},
        "authorizingOfficerTitle": { "type" : "string"},
        "applicantInfo": {
          "$ref": "#/definitions/applicantInfoTempOutfitter"
        },
        "type": {
          "type": "string", 
          "default": "tempOutfitterGuide",
          "enum":[            
            "tempOutfitterGuide"
          ]
        },
        "tempOutfitterFields": {
          "$ref": "#/definitions/tempOutfitterFields"
        }
       },
       "required": ["controlNumber","region","forest","district","applicantInfo","type","tempOutfitterFields"],
      "xml": {
        "name": "tempOutfitterPermitGet"
      }
    }
  }
}