You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2015/08/13 22:01:55 UTC

[01/11] allura git commit: [#6797] initial RAML, written by Heith

Repository: allura
Updated Branches:
  refs/heads/db/6797 [created] f864c018d


http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/tickets.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/tickets.json b/Allura/docs/api-rest/schemas/tickets.json
new file mode 100755
index 0000000..6a68c2c
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/tickets.json
@@ -0,0 +1,163 @@
+ {
+        "$schema": "http://json-schema.org/draft-04/schema#",
+        "id": "/",
+        "type": "object",
+        "properties": {
+          "tickets": {
+            "id": "tickets",
+            "type": "array",
+            "items": {
+              "id": "99",
+              "type": "object",
+              "properties": {
+                "summary": {
+                  "id": "summary",
+                  "type": "string"
+                },
+                "ticket_num": {
+                  "id": "ticket_num",
+                  "type": "integer"
+                }
+              }
+            }
+          },
+          "count": {
+            "id": "count",
+            "type": "integer"
+          },
+          "milestones": {
+            "id": "milestones",
+            "type": "array",
+            "items": {
+              "id": "7",
+              "type": "object",
+              "properties": {
+                "due_date": {
+                  "id": "due_date",
+                  "type": "string"
+                },
+                "complete": {
+                  "id": "complete",
+                  "type": "boolean"
+                },
+                "closed": {
+                  "id": "closed",
+                  "type": "integer"
+                },
+                "default": {
+                  "id": "default",
+                  "type": ""
+                },
+                "description": {
+                  "id": "description",
+                  "type": "string"
+                },
+                "total": {
+                  "id": "total",
+                  "type": "integer"
+                },
+                "name": {
+                  "id": "name",
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "tracker_config": {
+            "id": "tracker_config",
+            "type": "object",
+            "properties": {
+              "_id": {
+                "id": "_id",
+                "type": "string"
+              },
+              "options": {
+                "id": "options",
+                "type": "object",
+                "properties": {
+                  "ordinal": {
+                    "id": "ordinal",
+                    "type": "integer"
+                  },
+                  "TicketHelpNew": {
+                    "id": "TicketHelpNew",
+                    "type": "string"
+                  },
+                  "mount_point": {
+                    "id": "mount_point",
+                    "type": "string"
+                  },
+                  "TicketMonitoringType": {
+                    "id": "TicketMonitoringType",
+                    "type": "string"
+                  },
+                  "EnableVoting": {
+                    "id": "EnableVoting",
+                    "type": "boolean"
+                  },
+                  "TicketHelpSearch": {
+                    "id": "TicketHelpSearch",
+                    "type": "string"
+                  },
+                  "TicketMonitoringEmail": {
+                    "id": "TicketMonitoringEmail",
+                    "type": "string"
+                  },
+                  "import_id": {
+                    "id": "import_id",
+                    "type": "object",
+                    "properties": {
+                      "source": {
+                        "id": "source",
+                        "type": "string"
+                      },
+                      "app_config_id": {
+                        "id": "app_config_id",
+                        "type": "string"
+                      }
+                    }
+                  },
+                  "mount_label": {
+                    "id": "mount_label",
+                    "type": "string"
+                  }
+                }
+              }
+            }
+          },
+          "limit": {
+            "id": "limit",
+            "type": "integer"
+          },
+          "saved_bins": {
+            "id": "saved_bins",
+            "type": "array",
+            "items": {
+              "id": "4",
+              "type": "object",
+              "properties": {
+                "sort": {
+                  "id": "sort",
+                  "type": "string"
+                },
+                "_id": {
+                  "id": "_id",
+                  "type": "string"
+                },
+                "terms": {
+                  "id": "terms",
+                  "type": "string"
+                },
+                "summary": {
+                  "id": "summary",
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "page": {
+            "id": "page",
+            "type": "integer"
+          }
+        }
+      }

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/user.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/user.json b/Allura/docs/api-rest/schemas/user.json
new file mode 100755
index 0000000..77d0591
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/user.json
@@ -0,0 +1,196 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "id": "/",
+  "title": "User.",
+  "description": "A user's first and last name.",
+  "type": "object",
+  "properties": {
+    "status": {
+      "id": "status",
+      "type": "string"
+    },
+    "preferred_support_tool": {
+      "id": "preferred_support_tool",
+      "type": "string"
+    },
+    "profile_api_url": {
+      "id": "profile_api_url",
+      "type": "string"
+    },
+    "preferred_support_url": {
+      "id": "preferred_support_url",
+      "type": "string"
+    },
+    "labels": {
+      "id": "labels",
+      "type": "array",
+      "items": {}
+    },
+    "private": {
+      "id": "private",
+      "type": "boolean"
+    },
+    "creation_date": {
+      "id": "creation_date",
+      "type": "string"
+    },
+    "socialnetworks": {
+      "id": "socialnetworks",
+      "type": "array",
+      "items": {
+        "id": "1",
+        "type": "object",
+        "properties": {
+          "accounturl": {
+            "id": "accounturl",
+            "type": "string"
+          },
+          "socialnetwork": {
+            "id": "socialnetwork",
+            "type": "string"
+          }
+        }
+      }
+    },
+    "tools": {
+      "id": "tools",
+      "type": "array",
+      "items": {
+        "id": "5",
+        "type": "object",
+        "properties": {
+          "mount_point": {
+            "id": "mount_point",
+            "type": "string"
+          },
+          "name": {
+            "id": "name",
+            "type": "string"
+          },
+          "label": {
+            "id": "label",
+            "type": "string"
+          }
+        }
+      }
+    },
+    "categories": {
+      "id": "categories",
+      "type": "object",
+      "properties": {
+        "developmentstatus": {
+          "id": "developmentstatus",
+          "type": "array",
+          "items": {}
+        },
+        "environment": {
+          "id": "environment",
+          "type": "array",
+          "items": {}
+        },
+        "language": {
+          "id": "language",
+          "type": "array",
+          "items": {}
+        },
+        "license": {
+          "id": "license",
+          "type": "array",
+          "items": {}
+        },
+        "database": {
+          "id": "database",
+          "type": "array",
+          "items": {}
+        },
+        "topic": {
+          "id": "topic",
+          "type": "array",
+          "items": {}
+        },
+        "audience": {
+          "id": "audience",
+          "type": "array",
+          "items": {}
+        },
+        "translation": {
+          "id": "translation",
+          "type": "array",
+          "items": {}
+        },
+        "os": {
+          "id": "os",
+          "type": "array",
+          "items": {}
+        }
+      }
+    },
+    "_id": {
+      "id": "_id",
+      "type": "string"
+    },
+    "name": {
+      "id": "name",
+      "type": "string"
+    },
+    "url": {
+      "id": "url",
+      "type": "string"
+    },
+    "icon_url": {
+      "id": "icon_url",
+      "type": "null"
+    },
+    "video_url": {
+      "id": "video_url",
+      "type": "string"
+    },
+    "screenshots": {
+      "id": "screenshots",
+      "type": "array",
+      "items": {}
+    },
+    "summary": {
+      "id": "summary",
+      "type": "string"
+    },
+    "short_description": {
+      "id": "short_description",
+      "type": "null"
+    },
+    "moved_to_url": {
+      "id": "moved_to_url",
+      "type": "string"
+    },
+    "shortname": {
+      "id": "shortname",
+      "type": "string"
+    },
+    "developers": {
+      "id": "developers",
+      "type": "array",
+      "items": {
+        "id": "0",
+        "type": "object",
+        "properties": {
+          "url": {
+            "id": "url",
+            "type": "string"
+          },
+          "username": {
+            "id": "username",
+            "type": "string"
+          },
+          "name": {
+            "id": "name",
+            "type": "string"
+          }
+        }
+      }
+    },
+    "external_homepage": {
+      "id": "external_homepage",
+      "type": "string"
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/userProfile.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/userProfile.json b/Allura/docs/api-rest/schemas/userProfile.json
new file mode 100755
index 0000000..a2fde7b
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/userProfile.json
@@ -0,0 +1,266 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "id": "/",
+  "type": "object",
+  "title": "User Profile.",
+  "name": "/",
+  "properties": {
+    "username": {
+      "id": "username",
+      "type": "string",
+      "name": "username"
+    },
+    "name": {
+      "id": "name",
+      "type": "string",
+      "title": "Full Name.",
+      "description": "A user's first and last name.",
+      "name": "name"
+    },
+    "localization": {
+      "id": "localization",
+      "type": "object",
+      "description": "General Location.",
+      "name": "localization",
+      "properties": {
+        "city": {
+          "id": "city",
+          "type": "string",
+          "name": "city"
+        },
+        "country": {
+          "id": "country",
+          "type": "string",
+          "name": "country"
+        }
+      }
+    },
+    "skills": {
+      "id": "skills",
+      "type": "array",
+      "title": "Skills.",
+      "description": "A list of skills and associated skill levels.",
+      "name": "skills",
+      "items": {
+        "id": "0",
+        "type": "object",
+        "title": "0 schema.",
+        "name": "0",
+        "properties": {
+          "comment": {
+            "id": "comment",
+            "type": "string",
+            "title": "Comment.",
+            "description": "Additional comments about a given skill.",
+            "name": "comment"
+          },
+          "skill": {
+            "id": "skill",
+            "type": "object",
+            "title": "Skill schema.",
+            "name": "skill",
+            "properties": {
+              "fullpath": {
+                "id": "fullpath",
+                "type": "string",
+                "title": "Full Path.",
+                "description": "Category hierarchy.",
+                "name": "fullpath"
+              },
+              "fullname": {
+                "id": "fullname",
+                "type": "string",
+                "title": "Fullname schema.",
+                "description": "Name of category.",
+                "name": "fullname"
+              },
+              "shortname": {
+                "id": "shortname",
+                "type": "string",
+                "title": "Shortname.",
+                "description": "Short form of category.",
+                "name": "shortname"
+              },
+              "id": {
+                "id": "id",
+                "type": "integer",
+                "title": "Id.",
+                "description": "Unique identifier",
+                "name": "id"
+              }
+            }
+          },
+          "level": {
+            "id": "level",
+            "type": "string",
+             "enum": ["low", "medium", "high"],
+            "title": "Skill Level.",
+            "description": "low, medium or high",
+            "name": "level"
+          }
+        }
+      }
+    },
+    "webpages": {
+      "id": "webpages",
+      "type": "array",
+      "title": "Webpages schema.",
+      "description": "A list of URL strings associated with a user.",
+      "name": "webpages",
+      "items": {}
+    },
+    "joined": {
+      "id": "joined",
+      "type": "string",
+      "title": "Joined schema.",
+      "description": "The date a user signed up.",
+      "name": "joined"
+    },
+    "socialnetworks": {
+      "id": "socialnetworks",
+      "type": "array",
+      "title": "Social Networks.",
+      "description": "A list of social networks URLs.",
+      "name": "socialnetworks",
+      "items": {
+        "type": "object",
+        "properties": {
+          "accounturl": {
+            "id": "accounturl",
+            "type": "string",
+            "title": "Account Url.",
+            "description": "URL to the associated user account on the social network site.",
+            "name": "accounturl"
+          },
+          "socialnetwork": {
+            "id": "socialnetwork",
+            "type": "string",
+            "title": "Socialnetwork schema.",
+            "description": "Name of the social networking site.",
+            "name": "socialnetwork"
+          }
+        }
+      }
+    },
+    "telnumbers": {
+      "id": "telnumbers",
+      "type": "array",
+      "title": "Telnumbers schema.",
+      "description": "A list of phone numbers as strings.",
+      "name": "telnumbers",
+      "items": {}
+    },
+    "sex": {
+      "id": "sex",
+      "type": "string",
+      "name": "sex"
+    },
+    "availability": {
+      "id": "availability",
+      "type": "array",
+      "title": "Availability.",
+      "description": "Indicates the availability of a user.",
+      "name": "availability",
+      "items": {
+        "type": "object",
+        "description": "An explanation about the puropose of this instance described by this schema.",
+        "properties": {
+          "start_time": {
+            "id": "start_time",
+            "type": "object",
+            "title": "Start Time.",
+            "description": "The start of a user's availability.",
+            "name": "start_time",
+            "properties": {
+              "h": {
+                "id": "h",
+                "type": "integer",
+                "title": "Hour.",
+                "name": "h"
+              },
+              "m": {
+                "id": "m",
+                "type": "integer",
+                "title": "Minute.",
+                "name": "m"
+              }
+            }
+          },
+          "week_day": {
+            "id": "week_day",
+            "type": "string",
+            "title": "Week Day.",
+            "description": "Day of week.",
+            "name": "week_day"
+          },
+          "end_time": {
+            "id": "end_time",
+            "type": "object",
+            "title": "End Time.",
+            "description": "The end of a user's availability.",
+            "name": "end_time",
+            "properties": {
+              "h": {
+                "id": "h",
+                "type": "integer",
+                "title": "Hour.",
+                "name": "h"
+              },
+              "m": {
+                "id": "m",
+                "type": "integer",
+                "title": "Minute.",
+                "name": "m"
+              }
+            }
+          }
+        }
+      }
+    },
+    "projects": {
+      "id": "projects",
+      "type": "array",
+      "title": "Projects.",
+      "description": "A list of projects accociated with a user.",
+      "name": "projects",
+      "items": {
+        "type": "object",
+        "description": "Apache Allura project.",
+        "properties": {
+          "url": {
+            "id": "url",
+            "type": "string",
+            "title": "Project Url.",
+            "name": "url"
+          },
+          "last_updated": {
+            "id": "last_updated",
+            "type": "string",
+            "title": "Last Updated.",
+            "description": "string formatted timestamp.",
+            "name": "last_updated"
+          },
+          "name": {
+            "id": "name",
+            "type": "string",
+            "title": "Name.",
+            "name": "name"
+          },
+          "summary": {
+            "id": "summary",
+            "type": "string",
+            "title": "Project Summary.",
+            "name": "summary"
+          }
+        }
+      }
+    },
+    "skypeaccount": {
+      "id": "skypeaccount",
+      "type": ["null", "string"],
+      "title": "Skype Account.",
+      "description": "Skype account username.",
+      "name": "skypeaccount"
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/webhook.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/webhook.json b/Allura/docs/api-rest/schemas/webhook.json
new file mode 100755
index 0000000..a855903
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/webhook.json
@@ -0,0 +1,34 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "id": "http://jsonschema.net",
+  "type": "object",
+  "properties": {
+    "hook_url": {
+      "id": "http://jsonschema.net/hook_url",
+      "type": "string"
+    },
+    "mod_date": {
+      "id": "http://jsonschema.net/mod_date",
+      "type": "string"
+    },
+    "url": {
+      "id": "http://jsonschema.net/url",
+      "type": "string"
+    },
+    "_id": {
+      "id": "http://jsonschema.net/_id",
+      "type": "string"
+    },
+    "type": {
+      "id": "http://jsonschema.net/type",
+      "type": "string"
+    }
+  },
+  "required": [
+    "hook_url",
+    "mod_date",
+    "url",
+    "_id",
+    "type"
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/webhooks.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/webhooks.json b/Allura/docs/api-rest/schemas/webhooks.json
new file mode 100755
index 0000000..4c10e81
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/webhooks.json
@@ -0,0 +1,57 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "id": "/",
+  "type": "object",
+  "properties": {
+    "webhooks": {
+      "id": "webhooks",
+      "type": "array",
+      "items": {
+        "id": "1",
+        "type": "object",
+        "properties": {
+          "url": {
+            "id": "url",
+            "type": "string"
+          },
+          "mod_date": {
+            "id": "mod_date",
+            "type": "string"
+          },
+          "_id": {
+            "id": "_id",
+            "type": "string"
+          },
+          "type": {
+            "id": "type",
+            "type": "string"
+          },
+          "hook_url": {
+            "id": "hook_url",
+            "type": "string"
+          }
+        }
+      }
+    },
+    "limits": {
+      "id": "limits",
+      "type": "object",
+      "properties": {
+        "repo-push": {
+          "id": "repo-push",
+          "type": "object",
+          "properties": {
+            "max": {
+              "id": "max",
+              "type": "integer"
+            },
+            "used": {
+              "id": "used",
+              "type": "integer"
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/wiki.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/wiki.json b/Allura/docs/api-rest/schemas/wiki.json
new file mode 100755
index 0000000..7859527
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/wiki.json
@@ -0,0 +1,16 @@
+{
+    "$schema": "http://json-schema.org/draft-04/schema",
+    "type": "object",
+    "id": "#",
+    "properties": {
+        "pages": {
+            "items": {
+                "type": "string",
+                "id": "0"
+            },
+            "type": "array",
+            "id": "pages"
+        }
+    }
+}
+	
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/securitySchemes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/securitySchemes.yaml b/Allura/docs/api-rest/securitySchemes.yaml
new file mode 100755
index 0000000..a7927cc
--- /dev/null
+++ b/Allura/docs/api-rest/securitySchemes.yaml
@@ -0,0 +1,8 @@
+- oauth_1_0:
+    description: |
+        Apache Allura supports OAuth 1.0 for authenticating API requests.
+    type: OAuth 1.0
+    settings:
+      requestTokenUri: https://forge-allura.apache.org/rest/oauth/request_token
+      authorizationUri: https://forge-allura.apache.org/rest/oauth/authorize
+      tokenCredentialsUri: https://forge-allura.apache.org/rest/oauth/access_token
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/traits.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/traits.yaml b/Allura/docs/api-rest/traits.yaml
new file mode 100755
index 0000000..d483810
--- /dev/null
+++ b/Allura/docs/api-rest/traits.yaml
@@ -0,0 +1,80 @@
+- searchable:
+    queryParameters:
+      query:
+        description: |
+          JSON array [{"field1","value1","operator1"},{"field2","value2","operator2"},...,{"fieldN","valueN","operatorN"}] <<description>>
+        example: |
+          <<example>>
+- orderable:
+    queryParameters:
+      orderBy:
+        description: |
+          Order by field: <<fieldsList>>
+        type: string
+        required: false
+      order:
+        description: Order
+        enum: [desc, asc]
+        default: desc
+        required: false
+- pageable:
+    queryParameters:
+      page:
+        description: Skip over a number of elements by specifying an offset value for the query
+        type: integer
+        required: false
+        example: 2
+        default: 0
+      limit:
+        description: Limit the number of elements on the response
+        type: integer
+        required: false
+        example: 5
+        default: 10
+- paged:
+    queryParameters:
+      numPages:
+        description: The number of pages to return
+- secured:
+    displayName: secured
+    headers:
+      Authorization:
+        description: The auth token for this request
+    responses:
+      401:
+        description: Unauthorized
+- rateLimited:
+    queryParameters:
+      numPages:
+        description: The number of pages to return, not to exceed <<maxPages>>
+- permissionTestable:
+    description: |
+      **Endpoints**
+      Permissions can be checked at three levels: 
+      1. **Neighborhood:** `/rest/p/has_access`
+      2. **Project:** `/rest/p/project_name/has_access`
+      3. **Tool:** `/rest/p/project_name/mount_point/has_access`
+      
+      --- 
+      
+      It is only available to users that have 'admin' permission for corresponding neighborhood/project/tool. It requires user and perm parameters and will return JSON dict with result key, which contains boolean value, indicating if given user has perm permission to the neighborhood/project/tool.
+      
+      E.g.:
+      **GET** `/rest/p/test/wiki/has_access?user=admin1&perm=create`
+      *returns* { result: true }
+      **GET** `/rest/p/test/wiki/has_access?user=user01&perm=create`
+      *returns* { result: false }
+
+    queryParameters:
+      user:
+        type: string
+        example: heiths
+        required: true
+        description: The username to check
+      perm:
+        displayName: Permission
+        required: true
+        type: string
+        example: create
+        default: read
+        enum: ["read", "admin", "create", "update"]
\ No newline at end of file


[07/11] allura git commit: [#6797] reorder tools; link shouldn't got first

Posted by br...@apache.org.
[#6797] reorder tools; link shouldn't got first


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/ecd0e4a4
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/ecd0e4a4
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/ecd0e4a4

Branch: refs/heads/db/6797
Commit: ecd0e4a4b07e2a86076c779e10002b26afc6248e
Parents: 2866eba
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Aug 13 14:04:22 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Thu Aug 13 14:04:22 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/api.raml | 394 ++++++++++++++++++-------------------
 1 file changed, 197 insertions(+), 197 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/ecd0e4a4/Allura/docs/api-rest/api.raml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/api.raml b/Allura/docs/api-rest/api.raml
index 78402a2..dfedf35 100755
--- a/Allura/docs/api-rest/api.raml
+++ b/Allura/docs/api-rest/api.raml
@@ -69,203 +69,6 @@ baseUriParameters:
               default: read
               enum: [read, admin, create, update]
 
-      /{link}:
-        description: |
-          Represents the External Link tool.
-        type: {
-            tool: {
-            example: !include examples/link.json,
-            schema: !include schemas/link.json
-            }
-          }
-
-        get:
-          description: |
-            Returns the existing url.
-
-        post:
-          description: |
-            Updates the url. *authentication required*.
-          body:
-            application/x-www-form-urlencoded:
-              formParameters:
-                url:
-                  description: |
-                    The url you would like to update to.
-                  type: string
-                  example: http://google.com
-
-      /{blog}:
-        type: {
-            tool: {
-            example: !include examples/blog.json,
-            schema: !include schemas/blog.json
-            }
-          }
-        description: |
-          Represents the **Blog tool**
-
-        displayName: Blog
-        uriParameters:
-         blog:
-           displayName: Blog Name
-           type: string
-           example: blog
-
-        get:
-          description: |
-            Returns a list of posts, including title and API url.
-        post:
-          description: |
-            Creates a new blog post.
-          body:
-            application/x-www-form-urlencoded:
-              formParameters:
-                title:
-                  description: |
-                    The title of the post.
-                  type: string
-                  example: New API docs released!
-                text:
-                  description: |
-                    The text of the post.
-                  type: string
-                  example: Lots of text here describing apis!\nThat is all.
-                labels:
-                  description: |
-                    Labels of the post -- comma seperated strings
-                  type: string
-                  example: api,development
-                state:
-                  description: |
-                    Draft or published.
-                  enum: [draft, published]
-                  type: string
-                  example: published
-
-        /{year}/{month}/{title}:
-            description: Represents a blog post entry.
-            type: {
-              tool: {
-              example: !include examples/blogPost.json,
-              schema: !include schemas/blogPost.json
-              }
-            }
-            displayName: Blog Post
-            uriParameters:
-             year:
-               displayName: Year
-               type: number
-               example: 2015
-             month:
-               displayName: Month
-               type: number
-               example: 04
-             title:
-               displayName: Title
-               type: string
-               example: project-insights
-
-            post:
-              description: |
-                Updates an existing blog post.
-              body:
-                application/x-www-form-urlencoded:
-                  formParameters:
-                    title:
-                      description: |
-                        The title of the post.
-                      type: string
-                    text:
-                      description: |
-                        The text of the post.
-                      type: string
-                    labels:
-                      description: |
-                        Labels of the post -- comma seperated strings
-                      type: string
-                    state:
-                      description: |
-                        Draft or published.
-                      enum: [draft, published]
-                      type: string
-
-        /has_access:
-          type: permission
-          get:
-            queryParameters:
-              perm:
-                displayName: Permission
-                required: true
-                type: string
-                example: post
-                default: read
-                enum: [admin, configure, moderate, post, unmoderated_post, read, write]
-
-      /{discussion}:
-        description: |
-          Represents the **Discussion Tool**.
-        type: {
-          tool: {
-            schema: !include schemas/discussion.json,
-            example: !include examples/discussion.json
-            }
-          }
-
-        displayName: Discussion
-        uriParameters:
-         discussion:
-           displayName: Discussion Tool Name
-           type: string
-           example: "discussion"
-        get:
-          description: |
-            Returns a list of forums, including name, description, num_topics, and last_post details
-          is: [pageable]
-
-        /{forum}:
-          description: |
-            Represents a forum within a Discussion tool.
-          type: {
-            tool: {
-              # FIXME
-              example: !include examples/page.json,
-              schema: !include schemas/page.json
-            }
-          }
-          displayName: forum
-          uriParameters:
-           forum:
-             displayName: Forum Name
-             type: string
-             example: general
-
-          get:
-            is: [pageable]
-            description: |
-              returns a limited list of topics in the forum, with fields for subject, num_replies, API URL, and last_post
-              To view more than 100 threads, or 100 posts in a thread, use the pagination support of the API by adding ?page=1 etc. to the URL.
-
-          /thread/{thread}:
-            description: |
-              Represents a thread of posts.
-            get:
-              is: [pageable]
-              description: |
-                returns a list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
-
-        /has_access:
-          type: permission
-          get:
-            queryParameters:
-              perm:
-                displayName: Permission
-                required: true
-                type: string
-                example: post
-                default: read
-                enum: [admin, configure, moderate, post, unmoderated_post, read]
-
       /{wiki}:
         description: |
           Represents the **Wiki Tool**.
@@ -511,6 +314,203 @@ baseUriParameters:
                 enum: [admin, configure, moderate, post, unmoderated_post, read, create, delete, update, save_searches]
 
 
+      /{discussion}:
+        description: |
+          Represents the **Discussion Tool**.
+        type: {
+          tool: {
+            schema: !include schemas/discussion.json,
+            example: !include examples/discussion.json
+            }
+          }
+
+        displayName: Discussion
+        uriParameters:
+         discussion:
+           displayName: Discussion Tool Name
+           type: string
+           example: "discussion"
+        get:
+          description: |
+            Returns a list of forums, including name, description, num_topics, and last_post details
+          is: [pageable]
+
+        /{forum}:
+          description: |
+            Represents a forum within a Discussion tool.
+          type: {
+            tool: {
+              # FIXME
+              example: !include examples/page.json,
+              schema: !include schemas/page.json
+            }
+          }
+          displayName: forum
+          uriParameters:
+           forum:
+             displayName: Forum Name
+             type: string
+             example: general
+
+          get:
+            is: [pageable]
+            description: |
+              returns a limited list of topics in the forum, with fields for subject, num_replies, API URL, and last_post
+              To view more than 100 threads, or 100 posts in a thread, use the pagination support of the API by adding ?page=1 etc. to the URL.
+
+          /thread/{thread}:
+            description: |
+              Represents a thread of posts.
+            get:
+              is: [pageable]
+              description: |
+                returns a list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
+
+        /has_access:
+          type: permission
+          get:
+            queryParameters:
+              perm:
+                displayName: Permission
+                required: true
+                type: string
+                example: post
+                default: read
+                enum: [admin, configure, moderate, post, unmoderated_post, read]
+
+      /{blog}:
+        type: {
+            tool: {
+            example: !include examples/blog.json,
+            schema: !include schemas/blog.json
+            }
+          }
+        description: |
+          Represents the **Blog tool**
+
+        displayName: Blog
+        uriParameters:
+         blog:
+           displayName: Blog Name
+           type: string
+           example: blog
+
+        get:
+          description: |
+            Returns a list of posts, including title and API url.
+        post:
+          description: |
+            Creates a new blog post.
+          body:
+            application/x-www-form-urlencoded:
+              formParameters:
+                title:
+                  description: |
+                    The title of the post.
+                  type: string
+                  example: New API docs released!
+                text:
+                  description: |
+                    The text of the post.
+                  type: string
+                  example: Lots of text here describing apis!\nThat is all.
+                labels:
+                  description: |
+                    Labels of the post -- comma seperated strings
+                  type: string
+                  example: api,development
+                state:
+                  description: |
+                    Draft or published.
+                  enum: [draft, published]
+                  type: string
+                  example: published
+
+        /{year}/{month}/{title}:
+            description: Represents a blog post entry.
+            type: {
+              tool: {
+              example: !include examples/blogPost.json,
+              schema: !include schemas/blogPost.json
+              }
+            }
+            displayName: Blog Post
+            uriParameters:
+             year:
+               displayName: Year
+               type: number
+               example: 2015
+             month:
+               displayName: Month
+               type: number
+               example: 04
+             title:
+               displayName: Title
+               type: string
+               example: project-insights
+
+            post:
+              description: |
+                Updates an existing blog post.
+              body:
+                application/x-www-form-urlencoded:
+                  formParameters:
+                    title:
+                      description: |
+                        The title of the post.
+                      type: string
+                    text:
+                      description: |
+                        The text of the post.
+                      type: string
+                    labels:
+                      description: |
+                        Labels of the post -- comma seperated strings
+                      type: string
+                    state:
+                      description: |
+                        Draft or published.
+                      enum: [draft, published]
+                      type: string
+
+        /has_access:
+          type: permission
+          get:
+            queryParameters:
+              perm:
+                displayName: Permission
+                required: true
+                type: string
+                example: post
+                default: read
+                enum: [admin, configure, moderate, post, unmoderated_post, read, write]
+
+      /{link}:
+        description: |
+          Represents the External Link tool.
+        type: {
+            tool: {
+            example: !include examples/link.json,
+            schema: !include schemas/link.json
+            }
+          }
+
+        get:
+          description: |
+            Returns the existing url.
+
+        post:
+          description: |
+            Updates the url. *authentication required*.
+          body:
+            application/x-www-form-urlencoded:
+              formParameters:
+                url:
+                  description: |
+                    The url you would like to update to.
+                  type: string
+                  example: http://google.com
+
       /admin:
         description: |
           Endpoints for **project exporting** and managing **webhooks**


[02/11] allura git commit: [#6797] initial RAML, written by Heith

Posted by br...@apache.org.
[#6797] initial RAML, written by Heith


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/247ee2a9
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/247ee2a9
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/247ee2a9

Branch: refs/heads/db/6797
Commit: 247ee2a90d12131abc651cf3f4d4aface6c3552f
Parents: 032c2ed
Author: Dave Brondsema <da...@brondsema.net>
Authored: Fri Aug 7 16:05:56 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Aug 11 12:03:50 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/api.raml                   | 617 +++++++++++++++++++
 Allura/docs/api-rest/examples/blog.json         |  19 +
 Allura/docs/api-rest/examples/blogPost.json     |  20 +
 Allura/docs/api-rest/examples/discussion.json   |  58 ++
 Allura/docs/api-rest/examples/link.json         |   1 +
 Allura/docs/api-rest/examples/page.json         |  18 +
 Allura/docs/api-rest/examples/project.json      | 144 +++++
 .../docs/api-rest/examples/searchedTickets.json | 126 ++++
 Allura/docs/api-rest/examples/ticket.json       |  65 ++
 Allura/docs/api-rest/examples/tickets.json      | 150 +++++
 Allura/docs/api-rest/examples/user.json         |  75 +++
 Allura/docs/api-rest/examples/userProfile.json  |  56 ++
 Allura/docs/api-rest/examples/webhook.json      |   7 +
 Allura/docs/api-rest/examples/webhooks.json     |  24 +
 Allura/docs/api-rest/examples/wiki.json         |  28 +
 Allura/docs/api-rest/resourceTypes.yaml         | 150 +++++
 Allura/docs/api-rest/schemas/blog.json          |  37 ++
 Allura/docs/api-rest/schemas/blogPost.json      |  75 +++
 Allura/docs/api-rest/schemas/discussion.json    | 103 ++++
 Allura/docs/api-rest/schemas/hasPermission.json |  12 +
 Allura/docs/api-rest/schemas/link.json          |  12 +
 Allura/docs/api-rest/schemas/page.json          |  63 ++
 Allura/docs/api-rest/schemas/project.json       | 179 ++++++
 .../docs/api-rest/schemas/searchedTickets.json  | 210 +++++++
 Allura/docs/api-rest/schemas/ticket.json        | 180 ++++++
 Allura/docs/api-rest/schemas/tickets.json       | 163 +++++
 Allura/docs/api-rest/schemas/user.json          | 196 ++++++
 Allura/docs/api-rest/schemas/userProfile.json   | 266 ++++++++
 Allura/docs/api-rest/schemas/webhook.json       |  34 +
 Allura/docs/api-rest/schemas/webhooks.json      |  57 ++
 Allura/docs/api-rest/schemas/wiki.json          |  16 +
 Allura/docs/api-rest/securitySchemes.yaml       |   8 +
 Allura/docs/api-rest/traits.yaml                |  80 +++
 33 files changed, 3249 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/api.raml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/api.raml b/Allura/docs/api-rest/api.raml
new file mode 100755
index 0000000..b22c117
--- /dev/null
+++ b/Allura/docs/api-rest/api.raml
@@ -0,0 +1,617 @@
+#%RAML 0.8
+---
+title: Apache Allura
+version: 1
+baseUri: https://{domain}/rest
+
+resourceTypes: !include resourceTypes.yaml
+traits: !include traits.yaml
+securitySchemes: !include securitySchemes.yaml
+
+baseUriParameters:
+  domain:
+    description: "The website domain"
+    example: "forge-allura.apache.org"
+    default: "forge-allura.apache.org"
+
+
+/{neighborhood}:
+    description: |
+      Neighborhoods are groups of logically related projects, which have the same default options. 
+      
+    uriParameters:
+      neighborhood:
+        example: p
+        description: |
+          Allura has two default neighborhoods: **“Projects”** `/p` and **“Users”** `/u`. 
+          More information can be found [here](https://forge-allura.apache.org/docs/getting_started/using.html?highlight=neighborhood#what-are-neighborhoods)
+    
+    /has_access:
+      type: permission
+
+    /{project}:
+      description: |
+        Get or modify existing projects.
+      uriParameters:
+        project:
+          description: "The Apache Allura Project."
+          example: "allura"
+          pattern: ([a-zA-Z]+)
+    
+      type: { 
+          project: { 
+          schema: !include schemas/project.json,
+          example: !include examples/project.json
+          }
+        }
+            
+      /has_access:
+        type: permission
+        
+        /{link}:
+          description: |
+            Represents the External Link tool.
+          type: { 
+              tool: {
+              example: !include examples/link.json,
+              schema: !include schemas/link.json
+              }
+            }
+        
+          get:
+            description: |
+              Returns the existing url.
+        
+          post:
+            description: |
+              Updates the url. *authentication required*.
+            body:
+              application/x-www-form-urlencoded:
+                formParameters:
+                  url:
+                    description: |
+                      The url you would like to update to.
+                    type: string
+                    example: http://google.com
+        
+        /{blog}:
+          type: { 
+              tool: {
+              example: !include examples/blog.json,
+              schema: !include schemas/blog.json
+              }
+            }
+          description: |
+            Represents the **Blog tool**
+        
+          displayName: Blog
+          uriParameters:
+           blog:
+             displayName: Blog Name
+             type: string
+             example: blog
+        
+          get:
+            description: |
+              Returns a list of posts, including title and API url.
+            responses:
+              200:
+                body:
+                  application/json:
+                    schema: !include schemas/blog.json
+                    example: !include examples/blog.json
+          post:
+            description: |
+              Creates a new blog post.
+            body:
+              application/x-www-form-urlencoded:
+                formParameters:
+                  title:
+                    description: |
+                      The title of the post.
+                    type: string
+                    example: New API docs released!
+                  text:
+                    description: |
+                      The text of the post.
+                    type: string
+                    example: Lots of text here describing apis!\nThat is all.
+                  labels:
+                    description: |
+                      Labels of the post -- comma seperated strings
+                    type: string
+                    example: api,development
+                  state:
+                    description: |
+                      Draft or published.
+                    enum: [draft, published]
+                    type: string
+                    example: published
+        
+          /{year}/{month}/{title}:
+              type: {
+                tool: {
+                example: !include examples/blogPost.json,
+                schema: !include schemas/blogPost.json
+                }
+              }
+              displayName: Blog Post
+              uriParameters:
+               year:
+                 displayName: Year
+                 type: number
+                 example: 2015
+               month:
+                 displayName: Month
+                 type: number
+                 example: 04
+               title:
+                 displayName: Title
+                 type: string
+                 example: project-insights
+        
+              post:
+                description: |
+                  Updates an existing blog post.
+                body:
+                  application/x-www-form-urlencoded:
+                    formParameters:
+                      title:
+                        description: |
+                          The title of the post.
+                        type: string
+                      text:
+                        description: |
+                          The text of the post.
+                        type: string
+                      labels:
+                        description: |
+                          Labels of the post -- comma seperated strings
+                        type: string
+                      state:
+                        description: |
+                          Draft or published.
+                        enum: [draft, published]
+                        type: string
+        
+          /has_access:
+            type: permission
+        
+        /{forum}:
+          description: |
+            A list of forums
+          type: {
+              tool: {
+              example: !include examples/page.json,
+              schema: !include schemas/page.json
+              }
+            }
+        
+          displayName: forum
+          uriParameters:
+           forum:
+             displayName: Forum Name
+             type: string
+             example: general
+             description: |
+               Returns a list of forums, including name, description, num_posts, API URL, and last_post details
+        
+               To view more than 100 threads, or 100 posts in a thread, use the pagination support of the API by adding ?page=1 etc. to the URL.
+        
+          /forum:
+            description: |
+              returns a limited list of topics in the forum, with fields for subject, num_replies, API URL, and last_post
+            /{slug}:
+              description: |
+                returns a limited list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
+        
+          /has_access:
+            type: permission
+        
+        /{discussion}:
+          description: |
+            Represents the **Discussion Tool**.
+          type: {
+              tool: {
+              schema: !include schemas/discussion.json,
+              example: !include examples/discussion.json
+        
+              }
+            }
+        
+          displayName: Discussion
+          uriParameters:
+           discussion:
+             displayName: Discussion Name
+             type: string
+             example: "discussion"
+        
+          /{forum}:
+            type: {
+                tool: {
+                  example: !include examples/page.json,
+                  schema: !include schemas/page.json
+                }
+              }
+        
+            displayName: forum
+            uriParameters:
+             forum:
+               displayName: Forum Name
+               type: string
+               example: general
+        
+          /has_access:
+            type: permission
+        
+        /{wiki}:
+          description: |
+            Represents the **Wiki Tool**.
+          type: {
+              tool: {
+              example: !include examples/wiki.json,
+              schema: !include schemas/wiki.json
+              }
+            }
+        
+          displayName: Wiki
+          uriParameters:
+           wiki:
+             displayName: Wiki Name
+             type: string
+             example: wiki
+        
+        
+          /{title}:
+            type: {
+                tool: {
+                example: !include examples/page.json,
+                schema: !include schemas/page.json
+                }
+              }
+        
+            displayName: Title
+            uriParameters:
+             title:
+               displayName: Wiki Title
+               type: string
+               example: Extensions
+            get:
+              description: |
+                returns a JSON representation of a page
+            post:
+              description: |
+                Creates or updates the titled page.
+              body:
+                application/x-www-form-urlencoded:
+                  formParameters:
+                    text:
+                      description: |
+                        Page text.
+                      type: string
+                    labels:
+                      description: |
+                       Comma-separated list of page labels.
+                      type: string
+        
+        
+          /has_access:
+            type: permission
+        
+        /{tracker}:
+          description: |
+            Represents the **Ticket Tracker Tool**.
+          type: {
+              tool: {
+              example: !include examples/tickets.json,
+              schema: !include schemas/ticket.json
+              }
+            }
+          is: [pageable]
+        
+          displayName: Tracker Url
+          uriParameters:
+           tracker:
+             displayName: Tracker Name
+             type: string
+             example: tickets
+        
+          get:
+            is: [pageable]
+            description: |
+              Get a list of tickets
+        
+          /_discuss:
+            description: |
+              returns summary information about the tool discussion, including the threads in the discussion (there is one thread per ticket)
+            get:
+        
+            /thread/{threadId}:
+              uriParameters:
+               threadId:
+                 displayName: Thread ID
+                 type: string
+                 example: f78b98a0
+        
+              get:
+                description: |
+                  returns summary information about a thread, including the posts in a thread
+              /{slug}:
+                uriParameters:
+                 slug:
+                   displayName: Slug
+                   type: string
+                   example: 9133
+                get:
+                  description: |
+                    returns detailed information about a post
+                /reply:
+                  description: |
+                    create a threaded reply to the given post
+                  post:
+                    body:
+                      application/x-www-form-urlencoded:
+                        formParameters:
+                          text:
+                            description: the text of the reply
+                            example: |
+                              I *agree* with you.
+                            required: true
+                            type: string
+              /new:
+                description: |
+                  create a post in the given thread
+                post:
+                  body:
+                    application/x-www-form-urlencoded:
+                      formParameters:
+                        text:
+                          description: The text of the new post
+                          example: |
+                            This is a new post!
+                          required: true
+                          type: string
+        
+          /search:
+            type: {
+              searchableCollection: {
+              queryParamName: q,
+              schema: !include schemas/searchedTickets.json,
+              example: !include examples/searchedTickets.json
+              }
+            }
+            is: [ pageable]
+        
+          /new:
+            description: |
+              Creates a new ticket.
+            post:
+              body:
+                application/x-www-form-urlencoded:
+                  formParameters:
+                    access_token:
+                      description: "The access token provided by the authentication application"
+                      required: true
+                      type: string
+                    ticket_form.summary:
+                      description: Ticket title
+                      type: string
+                      required: false
+                    ticket_form.description:
+                      description: ticket description
+                      type: string
+                      required: false
+                    ticket_form.assigned_to::
+                      type: string
+                      required: false
+                      description: username of ticket assignee
+                    ticket_form.labels:
+                      type: string
+                      required: false
+                      description:  comma-separated list of ticket labels
+                    ticket_form.attachment:
+                      type: file
+                      description:  (optional) attachment
+                      required: false
+                    ticket_form.custom field name:
+                      description:  custom field value
+                      type: string
+                      required: false
+        
+          /{ticketNumber}:
+            type: {
+              tool: {
+              example: !include examples/ticket.json,
+              schema: !include schemas/ticket.json
+        
+              }
+            }
+            displayName: Ticket Number
+            uriParameters:
+              ticketNumber:
+                example: 1
+                description: |
+                  Get a details of a ticket.
+        
+            /save:
+              description: |
+                updates an existing ticket
+                parameters are the same as /rest/p/project_name/mount_point/new
+        
+              post:
+                body:
+                  application/x-www-form-urlencoded:
+                    formParameters:
+                      access_token:
+                        description: "The access token provided by the authentication application"
+                        required: true
+                        type: string
+                      ticket_form.summary:
+                        description: Ticket title
+                        type: string
+                        required: false
+                      ticket_form.description:
+                        description: ticket description
+                        type: string
+                        required: false
+                      ticket_form.assigned_to::
+                        type: string
+                        required: false
+                        description: username of ticket assignee
+                      ticket_form.labels:
+                        type: string
+                        required: false
+                        description:  comma-separated list of ticket labels
+                      ticket_form.attachment:
+                        type: file
+                        description:  (optional) attachment
+                        required: false
+                      ticket_form.custom field name:
+                        description:  custom field value
+                        type: string
+                        required: false
+        
+          /has_access:
+            type: permission
+        
+        
+        /admin:
+          description: |
+            Endpoints for **project exporting** and managing **webhooks**
+        
+          /export:
+            description: |
+              Generates a full bulk export of your tool(s) in the same format as the API for individual access. Authentication required. Here is an [example shell](https://forge-allura.apache.org/p/allura/git/ci/master/tree/scripts/project_export) script using these APIs, suitable to run as a cron job.
+            post:
+              description: |
+                Submits an export job
+        
+                **400 Bad Request:** tools parameter not provided or is invalid
+                **503 Service Unavailable:** an export job is already running
+                **200 OK:** job submitted. Body will be: *{"status": "in progress", "filename": FILENAME}*
+          /export_status:
+            description: |
+              Check status of a bulk export job
+            get:
+              description: |
+                Returns status: busy or ready
+        
+          /{project}/webhooks:
+              type: {
+                typedCollection: {
+                example: !include examples/webhooks.json,
+                schema: !include schemas/webhook.json
+                }
+              }
+              is: [secured]
+              description: |
+                This is to manage webhooks programatically. See the [Webhook docs](https://forge-allura.apache.org/p/allura/wiki/Webhooks/) for more information.
+        
+                The webhook payloads and signature verification method are documented at https://forge-allura.apache.org/p/allura/wiki/Webhooks/
+        
+        
+              /{type}:
+                uriParameters:
+                  type:
+                    example: repo-push
+                    enum: [repo-push]
+                    description: |
+                      Allura supports one type of webhook for the moment - repo-push, triggered when a repository receives new commits. It is supported for Git, Mercurial and SVN repositories.
+                post:
+                  description: |
+                    Create a new webhook.
+                  body:
+                    application/x-www-form-urlencoded:
+                      formParameters:
+                        url:
+                          description: |
+                            The url to call when the the webhook is triggered.
+                          required: true
+                          type: string
+                /{id}:
+                  uriParameters:
+                    id:
+                      type: string
+                      description: |
+                        Unique identifier for a webhook.
+        
+                  get:
+                    description: |
+                      View a webhook
+                  post:
+                    description: |
+                      Update an existing webhook
+                    body:
+                      application/x-www-form-urlencoded:
+                        formParameters:
+                          url:
+                            description: |
+                              The url to call when the the webhook is triggered.
+                            required: true
+                            type: string
+                          secret:
+                            description: |
+                              Optionally supply your own secret.
+        
+                              Note: DO NOT ever expose your secret!
+                            required: false
+                            type: string
+                  delete:
+                    description: |
+                      Delete an existing webhook
+          /install_tool:
+            description: |
+              Adds a new tool to the project. *Authentication Required*.
+        
+              returns dict with two fields:
+              success: False if error is occurred, otherwise True
+              info: success or error message
+            post:
+              body:
+                application/x-www-form-urlencoded:
+                  formParameters:
+                    tool:
+                      description: Tool name that you want to install.
+                      example: tickets
+                      enum: [tickets, link, git, svn, mercurial, blog, discussion, subproject, wiki]
+                      required: true
+                      type: string
+                    mount_point:
+                      description: |
+                        The section of the url relitive to your project. For example: /p/your_project/{mount_point}
+                      example: git
+                      type: string
+                      required: true
+                    mount_label:
+                      description: |
+                        How your tool will be displayed in your project (like a "nice name" for the tool).
+                      example: Git
+                      type: string
+                      required: true
+                    order:
+                      type: string
+                      enum: [first, last, alpha_tool]
+                      required: false
+                      description: |
+                        "first", "last", or "alpha_tool" for position with respect to existing tools (or existing tools of the same type for "alpha_tool")
+        
+        /{username}:
+            description: |
+              Represents a user (returns a project-like response).
+              
+              Most often you'll use the /profile suffix to return user data.
+            type: {
+              tool:{
+                example: !include examples/user.json,
+                schema: !include schemas/user.json
+              }
+            }
+            /profile:
+              description: |
+                A user profile
+              type: {
+                tool:{
+                example: !include examples/userProfile.json,
+                schema: !include schemas/userProfile.json
+                }
+              }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/blog.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/blog.json b/Allura/docs/api-rest/examples/blog.json
new file mode 100755
index 0000000..5eb25dd
--- /dev/null
+++ b/Allura/docs/api-rest/examples/blog.json
@@ -0,0 +1,19 @@
+{
+    "count": 3,
+    "limit": 10,
+    "page": 0,
+    "posts": [
+        {
+            "title": "Project Insights",
+            "url": "http://localhost:8080/rest/p/finna/blog/2015/07/project-insights/"
+        },
+        {
+            "title": "New blog",
+            "url": "http://localhost:8080/rest/p/finna/blog/2015/07/new-blog/"
+        },
+        {
+            "title": "Old News",
+            "url": "http://localhost:8080/rest/p/finna/blog/2015/07/old-news/"
+        }
+    ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/blogPost.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/blogPost.json b/Allura/docs/api-rest/examples/blogPost.json
new file mode 100755
index 0000000..d3a41da
--- /dev/null
+++ b/Allura/docs/api-rest/examples/blogPost.json
@@ -0,0 +1,20 @@
+{
+    "_id": "55ad27204d21224d82656b45",
+    "author": "root",
+    "discussion_thread": {
+        "_id": "afb74fce",
+        "discussion_id": "55ad26e94d21224d82656b31",
+        "posts": [],
+        "subject": "New blog discussion"
+    },
+    "discussion_thread_url": "http://localhost:8080/rest/p/finna/blog/_discuss/thread/afb74fce/",
+    "labels": [
+        "general"
+    ],
+    "mod_date": "2015-07-20 16:51:44.589000",
+    "related_artifacts": [],
+    "state": "published",
+    "text": "Just made a new blog here",
+    "title": "New blog",
+    "url": "http://localhost:8080/rest/p/finna/blog/2015/07/new-blog/"
+}

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/discussion.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/discussion.json b/Allura/docs/api-rest/examples/discussion.json
new file mode 100755
index 0000000..128269b
--- /dev/null
+++ b/Allura/docs/api-rest/examples/discussion.json
@@ -0,0 +1,58 @@
+{
+  "count": 3,
+  "forums": [
+    {
+      "num_topics": 1,
+      "name": "Dev Only",
+      "url": "http://localhost:8080/rest/p/finna/discussion/devs/",
+      "shortname": "devs",
+      "_id": "55ad23c34d21224d82656add",
+      "last_post": {
+        "flagged_by": [],
+        "status": "ok",
+        "last_edited": "2015-07-20 16:39:53.290000",
+        "author": "root",
+        "timestamp": "2015-07-20 16:39:46.083000",
+        "thread_id": "2adb0c35",
+        "text": "checking into it.",
+        "author_id": "55687b5f4d2122410c76eb92",
+        "_id": "83aa16ca9db9f811d68ba47285c3d4c65b4f60d7.discussion@finna.p.localhost",
+        "slug": "c5af",
+        "subject": "Potential issue"
+      },
+      "description": "not open to public!"
+    },
+    {
+      "num_topics": 2,
+      "name": "General Discussion",
+      "url": "http://localhost:8080/rest/p/finna/discussion/general/",
+      "shortname": "general",
+      "_id": "5568f6684d212236d1eaed07",
+      "last_post": {
+        "flagged_by": [],
+        "status": "ok",
+        "last_edited": null,
+        "author": "root",
+        "timestamp": "2015-07-20 16:36:18.019000",
+        "thread_id": "a7528751",
+        "text": "How to fix anything!",
+        "author_id": "55687b5f4d2122410c76eb92",
+        "_id": "b248780c7fa265106dc91e6004107dd4a601afe8.discussion@finna.p.localhost",
+        "slug": "c920",
+        "subject": "Tech Support"
+      },
+      "description": "Forum about anything you want to talk about."
+    },
+    {
+      "num_topics": 0,
+      "name": "Off Topic",
+      "url": "http://localhost:8080/rest/p/finna/discussion/off-topic/",
+      "shortname": "off-topic",
+      "_id": "55ad23a44d21224d82656ada",
+      "last_post": null,
+      "description": "anything else...."
+    }
+  ],
+  "limit": 25,
+  "page": 0
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/link.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/link.json b/Allura/docs/api-rest/examples/link.json
new file mode 100755
index 0000000..f0f351c
--- /dev/null
+++ b/Allura/docs/api-rest/examples/link.json
@@ -0,0 +1 @@
+{"url": "https://google.com"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/page.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/page.json b/Allura/docs/api-rest/examples/page.json
new file mode 100755
index 0000000..e40e9d8
--- /dev/null
+++ b/Allura/docs/api-rest/examples/page.json
@@ -0,0 +1,18 @@
+{
+  "related_artifacts": [
+    "/p/allura/wiki/Home/"
+  ],
+  "attachments": [],
+  "title": "Extensions",
+  "text": "The following extensions for Allura are available as separate packages:\r\n\r\nType  | Title  | License | Notes\r\n----- | ------------- | ----- | Notes\r\nTool  | [ForgeHg](http://pypi.python.org/pypi/ForgeHg) | GPLv2 | Maintained by the Allura developers.\u003Cbr>  Separate package due to Hg GPL license.\r\nTool  | [Pastebin](https://sourceforge.net/p/forgepastebin/) | Apache&nbsp;2 | Maintained by the Allura developers.\u003Cbr>  Example of writing a simple tool.\r\nTool  | [Donay Incentify](http://docs.donay.com/display/Dosense/Installing+Incentify+in+Allura) | Apache 2\r\nTool  | [Bitergia metrics](https://github.com/Bitergia/AlluraBitergiaMetrics) | Apache 2\r\nTool  | [Perforce SCM](https://sourceforge.net/p/p4allura/allura-fork/ci/master/tree/ForgeP4/)\r\nTool  | [Django Allura](https://github.com/rick446/DjangoAllura)\r\nImporter | [Google Code Wiki Importer](http://pypi.python.org/pypi/googlecodewikiimporter/) | GPLv3 | Maintained by the Allura developers.\u003C
 br>  Separate package due to `html2text` GPL.\r\nImporter | [Trac Wiki Importer](http://pypi.python.org/pypi/tracwikiimporter/) | GPLv3 | Maintained by the Allura developers.\u003Cbr>  Separate package due to `html2text` GPL.\r\nImporter | [Mediawiki data importer](http://pypi.python.org/pypi/mediawikiimporter/) | GPLv3 | Maintained by the Allura developers.\u003Cbr>  Separate package due to `html2text` GPL.\r\nExternal Integration  | [TeamCity](https://github.com/Vampire/teamcity-sourceforge) | Apache 2 | Targeted at SourceForge.net but APIs are the same, so base domain could be changed to any Allura host.\r\n",
+  "labels": [],
+  "discussion_thread": {
+    "_id": "9d181a1d",
+    "posts": [],
+    "discussion_id": "523331da6d19cd54e56931db",
+    "subject": ""
+  },
+  "mod_date": "2015-07-07 17:30:01.607000",
+  "_id": "523332d96d19cd54e569322b",
+  "discussion_thread_url": "https://forge-allura.apache.org/rest/p/allura/wiki/_discuss/thread/9d181a1d/"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/project.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/project.json b/Allura/docs/api-rest/examples/project.json
new file mode 100755
index 0000000..6744d30
--- /dev/null
+++ b/Allura/docs/api-rest/examples/project.json
@@ -0,0 +1,144 @@
+{
+    "status": "active",
+    "preferred_support_tool": "",
+    "preferred_support_url": "",
+    "labels": [],
+    "private": false,
+    "creation_date": "2013-02-12",
+    "socialnetworks": [
+        {
+            "accounturl": "",
+            "socialnetwork": "Twitter"
+        },
+        {
+            "accounturl": null,
+            "socialnetwork": "Facebook"
+        }
+    ],
+    "tools": [
+        {
+            "mount_point": "activity",
+            "name": "activity",
+            "label": "Activity"
+        },
+        {
+            "mount_point": "git",
+            "name": "git",
+            "label": "Git"
+        },
+        {
+            "mount_point": "allura-dev",
+            "name": "link",
+            "label": "Mailing List (dev)"
+        },
+        {
+            "mount_point": "wiki",
+            "name": "wiki",
+            "label": "Wiki"
+        },
+        {
+            "mount_point": "docs",
+            "name": "link",
+            "label": "Docs"
+        },
+        {
+            "mount_point": "license",
+            "name": "link",
+            "label": "License"
+        },
+        {
+            "mount_point": "apache",
+            "name": "link",
+            "label": "Apache.org"
+        },
+        {
+            "mount_point": "security",
+            "name": "link",
+            "label": "Security"
+        },
+        {
+            "mount_point": "thanks",
+            "name": "link",
+            "label": "Thanks"
+        },
+        {
+            "mount_point": "sponsorship",
+            "name": "link",
+            "label": "Sponsorship"
+        },
+        {
+            "mount_point": "tickets",
+            "name": "tickets",
+            "label": "Tickets"
+        },
+        {
+            "mount_point": "AlluraSite",
+            "name": "git",
+            "label": "Allura Site Repo"
+        },
+        {
+            "mount_point": "pastebin",
+            "name": "pastebin",
+            "label": "Pastebin"
+        }
+    ],
+    "categories": {
+        "developmentstatus": [],
+        "environment": [],
+        "language": [],
+        "license": [],
+        "database": [],
+        "topic": [],
+        "audience": [],
+        "translation": [],
+        "os": []
+    },
+    "_id": "511aa1d46d19cd14f9060c67",
+    "name": "Apache Allura™",
+    "url": "https://forge-allura.apache.org/p/allura/",
+    "icon_url": "https://forge-allura.apache.org/p/allura/icon",
+    "video_url": "www.youtube.com/embed/va9WPbKAI9U?rel=0",
+    "screenshots": [],
+    "summary": "Forge software for hosting software projects",
+    "short_description": "Apache Allura is an open source implementation of a software \"forge\", a web site that manages source code repositories, bug reports, discussions, wiki pages, blogs and more for any number of individual projects.",
+    "moved_to_url": "",
+    "shortname": "allura",
+    "developers": [
+        {
+            "url": "https://forge-allura.apache.org/u/masterbunnyfu/",
+            "username": "masterbunnyfu",
+            "name": "Cory Johns"
+        },
+        {
+            "url": "https://forge-allura.apache.org/u/jetmind/",
+            "username": "jetmind",
+            "name": "Igor Bondarenko"
+        },
+        {
+            "url": "https://forge-allura.apache.org/u/wwitzel3/",
+            "username": "wwitzel3",
+            "name": "Wayne Witzel III"
+        },
+        {
+            "url": "https://forge-allura.apache.org/u/alexluberg/",
+            "username": "alexluberg",
+            "name": "Alexander Luberg"
+        },
+        {
+            "url": "https://forge-allura.apache.org/u/vansteenburgh/",
+            "username": "vansteenburgh",
+            "name": "Tim Van Steenburgh"
+        },
+        {
+            "url": "https://forge-allura.apache.org/u/heiths/",
+            "username": "heiths",
+            "name": "Heith Seewald"
+        },
+        {
+            "url": "https://forge-allura.apache.org/u/brondsem/",
+            "username": "brondsem",
+            "name": "Dave Brondsema"
+        }
+    ],
+    "external_homepage": "http://allura.apache.org/"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/searchedTickets.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/searchedTickets.json b/Allura/docs/api-rest/examples/searchedTickets.json
new file mode 100755
index 0000000..a5502c5
--- /dev/null
+++ b/Allura/docs/api-rest/examples/searchedTickets.json
@@ -0,0 +1,126 @@
+{
+  "sort": null,
+  "count": 2,
+  "filter_choices": {
+    "status": [
+      [
+        "closed",
+        4
+      ],
+      [
+        "in-progress",
+        5
+      ],
+      [
+        "open",
+        2
+      ],
+      [
+        "review",
+        3
+      ]
+    ],
+    "reported_by": [
+      [
+        "brondsem",
+        5
+      ],
+      [
+        "ctsai",
+        1
+      ],
+      [
+        "heiths",
+        7
+      ],
+      [
+        "jetmind",
+        1
+      ]
+    ],
+    "_milestone": [
+      [
+        "unreleased",
+        14
+      ]
+    ],
+    "assigned_to": [
+      [
+        "brondsem",
+        1
+      ],
+      [
+        "heiths",
+        4
+      ],
+      [
+        "jetmind",
+        7
+      ]
+    ]
+  },
+  "filter": {},
+  "q": "labels:\"sf-current\"",
+  "solr_error": null,
+  "limit": 100,
+  "tickets": [
+    {
+      "status": "review",
+      "reported_by_id": "548b2d136d19cd59705380a3",
+      "related_artifacts": [],
+      "attachments": [],
+      "reported_by": "heiths",
+      "assigned_to": "heiths",
+      "labels": [
+        "sf-current",
+        "sf-2"
+      ],
+      "discussion_disabled": false,
+      "assigned_to_id": "548b2d136d19cd59705380a3",
+      "private": false,
+      "summary": "Fix pagination issue in the commit browser",
+      "mod_date": "2015-07-17 14:53:43.480000",
+      "votes_down": 0,
+      "votes_up": 0,
+      "_id": "55a6c6c86d19cd7d2dc5d89d",
+      "discussion_thread_url": "https://forge-allura.apache.org/rest/p/allura/tickets/_discuss/thread/3e30246e/",
+      "ticket_num": 7932,
+      "custom_fields": {
+        "_component": "General",
+        "_milestone": "unreleased",
+        "_reviewer": ""
+      },
+      "created_date": "2015-07-15 20:47:04.434000"
+    },
+    {
+      "status": "closed",
+      "reported_by_id": "511aa8756d19cd161e8c1b04",
+      "related_artifacts": [],
+      "attachments": [],
+      "reported_by": "brondsem",
+      "assigned_to": "brondsem",
+      "labels": [
+        "sf-current",
+        "sf-1",
+        "ux"
+      ],
+      "discussion_disabled": false,
+      "assigned_to_id": "511aa8756d19cd161e8c1b04",
+      "private": false,
+      "summary": "Site admin search tables can overflow the page width",
+      "mod_date": "2015-07-14 08:40:35.931000",
+      "votes_down": 0,
+      "votes_up": 0,
+      "_id": "55a3effc6d19cd320d814749",
+      "discussion_thread_url": "https://forge-allura.apache.org/rest/p/allura/tickets/_discuss/thread/1f1023b2/",
+      "ticket_num": 7928,
+      "custom_fields": {
+        "_component": "General",
+        "_milestone": "unreleased",
+        "_reviewer": "jetmind"
+      },
+      "created_date": "2015-07-13 17:06:04.135000"
+    }
+  ],
+  "page": 0
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/ticket.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/ticket.json b/Allura/docs/api-rest/examples/ticket.json
new file mode 100755
index 0000000..f4ba990
--- /dev/null
+++ b/Allura/docs/api-rest/examples/ticket.json
@@ -0,0 +1,65 @@
+{
+  "ticket": {
+    "status": "review",
+    "reported_by_id": "548b2d136d19cd59705380a3",
+    "related_artifacts": [],
+    "attachments": [],
+    "reported_by": "heiths",
+    "assigned_to": "heiths",
+    "labels": [
+      "sf-2",
+      "sf-current"
+    ],
+    "discussion_disabled": false,
+    "assigned_to_id": "548b2d136d19cd59705380a3",
+    "private": false,
+    "summary": " Speed up diff processing with binary files",
+    "description": "In a git repo with a large amount of binary files, our diff processing can be very inefficient. We should test if a file is binary and exclude it from the diff processing section.",
+    "discussion_thread": {
+      "_id": "8fe1847f",
+      "posts": [
+        {
+          "text": "- **labels**:  --> sf-2, sf-current\n",
+          "attachments": [],
+          "author": "brondsem",
+          "timestamp": "2015-07-13 15:53:20.175000",
+          "last_edited": null,
+          "slug": "498b",
+          "subject": "#7925  Speed up diff processing with binary files"
+        },
+        {
+          "text": "- **status**: in-progress --> review\n",
+          "attachments": [],
+          "author": "heiths",
+          "timestamp": "2015-07-16 19:10:50.153000",
+          "last_edited": null,
+          "slug": "bd3e",
+          "subject": "#7925  Speed up diff processing with binary files"
+        },
+        {
+          "text": "QA: **hs/7925**\r\n\r\nBinary files should no longer make XHR requests for diff processing.",
+          "attachments": [],
+          "author": "heiths",
+          "timestamp": "2015-07-16 19:10:50.511000",
+          "last_edited": null,
+          "slug": "b8a7",
+          "subject": "#7925  Speed up diff processing with binary files"
+        }
+      ],
+      "discussion_id": "545186e86d19cd63b88d1604",
+      "subject": ""
+    },
+    "mod_date": "2015-07-16 19:10:50.625000",
+    "votes_down": 0,
+    "votes_up": 0,
+    "_id": "55a3d3736d19cd2cf292db10",
+    "discussion_thread_url": "https://forge-allura.apache.org/rest/p/allura/tickets/_discuss/thread/8fe1847f/",
+    "ticket_num": 7925,
+    "custom_fields": {
+      "_component": "General",
+      "_milestone": "unreleased",
+      "_reviewer": ""
+    },
+    "created_date": "2015-07-13 15:04:19.926000"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/tickets.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/tickets.json b/Allura/docs/api-rest/examples/tickets.json
new file mode 100755
index 0000000..fc0acc9
--- /dev/null
+++ b/Allura/docs/api-rest/examples/tickets.json
@@ -0,0 +1,150 @@
+{
+    "tickets": [
+        {
+            "summary": "Diff view on the Commit Browser should have a file size limit",
+            "ticket_num": 7933
+        },
+        {
+            "summary": "Fix pagination issue in the commit browser",
+            "ticket_num": 7932
+        },
+        {
+            "summary": "Tool install dialog needs to escape html/js",
+            "ticket_num": 7931
+        },
+        {
+            "summary": "Bug: viewing a thread updates project mod_date",
+            "ticket_num": 7930
+        },
+        {
+            "summary": "Enable voting on tickets by default",
+            "ticket_num": 7929
+        }
+    ],
+    "count": 3662,
+    "milestones": [
+        {
+            "due_date": "",
+            "complete": false,
+            "closed": 2316,
+            "default": false,
+            "description": "",
+            "total": 2316,
+            "name": "asf_release_1.0.0"
+        },
+        {
+            "due_date": "",
+            "complete": false,
+            "closed": 0,
+            "default": false,
+            "description": "",
+            "total": 0,
+            "name": "asf_release_1.0.0-RC1"
+        },
+        {
+            "due_date": "",
+            "complete": false,
+            "closed": 66,
+            "default": false,
+            "description": "",
+            "total": 66,
+            "name": "asf_release_1.0.1"
+        },
+        {
+            "due_date": "",
+            "complete": false,
+            "closed": 145,
+            "default": false,
+            "description": "",
+            "total": 145,
+            "name": "asf_release_1.1.0"
+        },
+        {
+            "due_date": "",
+            "complete": false,
+            "closed": 337,
+            "default": "on",
+            "description": "",
+            "total": 891,
+            "name": "unreleased"
+        },
+        {
+            "due_date": "",
+            "complete": false,
+            "closed": 182,
+            "default": false,
+            "description": "",
+            "total": 182,
+            "name": "asf_release_1.2.0"
+        },
+        {
+            "due_date": "",
+            "complete": false,
+            "closed": 13,
+            "default": false,
+            "description": "",
+            "total": 13,
+            "name": "asf_release_1.2.1"
+        },
+        {
+            "due_date": "",
+            "complete": false,
+            "closed": 49,
+            "default": false,
+            "description": "",
+            "total": 49,
+            "name": "asf_release_1.3.0"
+        }
+    ],
+    "tracker_config": {
+        "_id": "545186e86d19cd63b88d1603",
+        "options": {
+            "ordinal": 3,
+            "TicketHelpNew": "",
+            "mount_point": "tickets",
+            "TicketMonitoringType": "AllPublicTicketChanges",
+            "EnableVoting": true,
+            "TicketHelpSearch": "",
+            "TicketMonitoringEmail": "dev@allura.apache.org",
+            "import_id": {
+                "source": "Allura",
+                "app_config_id": "4c3493551be1ce11d8000032"
+            },
+            "mount_label": "Tickets"
+        }
+    },
+    "limit": 5,
+    "saved_bins": [
+        {
+            "sort": "",
+            "_id": "54526f3f6d19cd509a769848",
+            "terms": "labels:bitesize AND (status:open OR status:review OR status:in-progress)",
+            "summary": "Bitesize Tickets"
+        },
+        {
+            "sort": "",
+            "_id": "54526fd16d19cd5093545c7b",
+            "terms": "(assigned_to_s:$USER AND status:(blocked in-progress open)) OR (_reviewer_s:$USER AND status:review)",
+            "summary": "My Assigned Tickets"
+        },
+        {
+            "sort": "",
+            "_id": "545270036d19cd509a76984c",
+            "terms": "reported_by:$USER AND NOT status:closed",
+            "summary": "My Submitted Tickets"
+        },
+        {
+            "sort": "",
+            "_id": "54526ef86d19cd42f87fbb80",
+            "terms": "status:review",
+            "summary": "Needs Review"
+        },
+        {
+            "sort": "",
+            "_id": "5452703a6d19cd509a769850",
+            "terms": "labels:\"sf-current\"",
+            "summary": "SourceForge current sprint"
+        }
+    ],
+    "page": 0
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/user.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/user.json b/Allura/docs/api-rest/examples/user.json
new file mode 100755
index 0000000..1c9632f
--- /dev/null
+++ b/Allura/docs/api-rest/examples/user.json
@@ -0,0 +1,75 @@
+{
+    "status": "active",
+    "preferred_support_tool": "",
+    "profile_api_url": "https://forge-allura.apache.org/rest/u/heiths/profile/",
+    "preferred_support_url": "",
+    "labels": [],
+    "private": false,
+    "creation_date": "2014-12-12",
+    "socialnetworks": [
+        {
+            "accounturl": "",
+            "socialnetwork": "Twitter"
+        },
+        {
+            "accounturl": "",
+            "socialnetwork": "Facebook"
+        }
+    ],
+    "tools": [
+        {
+            "mount_point": "admin",
+            "name": "admin",
+            "label": "Admin"
+        },
+        {
+            "mount_point": "wiki",
+            "name": "wiki",
+            "label": "Wiki"
+        },
+        {
+            "mount_point": "profile",
+            "name": "profile",
+            "label": "Profile"
+        },
+        {
+            "mount_point": "search",
+            "name": "search",
+            "label": "Search"
+        },
+        {
+            "mount_point": "activity",
+            "name": "activity",
+            "label": "Activity"
+        }
+    ],
+    "categories": {
+        "developmentstatus": [],
+        "environment": [],
+        "language": [],
+        "license": [],
+        "database": [],
+        "topic": [],
+        "audience": [],
+        "translation": [],
+        "os": []
+    },
+    "_id": "548b2d136d19cd59705380a6",
+    "name": "u/heiths",
+    "url": "https://forge-allura.apache.org/u/heiths/",
+    "icon_url": null,
+    "video_url": "",
+    "screenshots": [],
+    "summary": "",
+    "short_description": null,
+    "moved_to_url": "",
+    "shortname": "u/heiths",
+    "developers": [
+        {
+            "url": "https://forge-allura.apache.org/u/heiths/",
+            "username": "heiths",
+            "name": "Heith Seewald"
+        }
+    ],
+    "external_homepage": ""
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/userProfile.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/userProfile.json b/Allura/docs/api-rest/examples/userProfile.json
new file mode 100755
index 0000000..ef04a94
--- /dev/null
+++ b/Allura/docs/api-rest/examples/userProfile.json
@@ -0,0 +1,56 @@
+{
+    "username": "heiths",
+    "name": "Heith Seewald",
+    "localization": {
+        "city": "Grand Rapids Area",
+        "country": "United States"
+    },
+    "skills": [
+        {
+            "comment": "asdf",
+            "skill": {
+                "fullpath": "Programming Language",
+                "fullname": "Programming Language",
+                "shortname": "language",
+                "id": 160
+            },
+            "level": "high"
+        }
+    ],
+    "webpages": [],
+    "joined": "2014-12-12 17:59:47+00:00",
+    "socialnetworks": [
+        {
+            "accounturl": "www.linkedin.com/in/heiths/",
+            "socialnetwork": "Linkedin"
+        },
+        {
+            "accounturl": "heiths",
+            "socialnetwork": "Google+"
+        }
+    ],
+    "telnumbers": [],
+    "sex": "Male",
+    "availability": [
+        {
+            "start_time": {
+                "h": 3,
+                "m": 30
+            },
+            "week_day": "Thursday",
+            "end_time": {
+                "h": 4,
+                "m": 45
+            }
+        }
+    ],
+    "projects": [
+        {
+            "url": "/p/allura/",
+            "last_updated": "2015-07-28 16:40:57.701000",
+            "name": "Apache Allura™",
+            "summary": "Forge software for hosting software projects"
+        }
+    ],
+    "skypeaccount": null
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/webhook.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/webhook.json b/Allura/docs/api-rest/examples/webhook.json
new file mode 100755
index 0000000..68f4d9c
--- /dev/null
+++ b/Allura/docs/api-rest/examples/webhook.json
@@ -0,0 +1,7 @@
+{
+    "hook_url": "http://hs.dev:9999/push-it/",
+    "mod_date": "2015-07-24 16:44:03.871000",
+    "url": "http://localhost:8080/rest/p/finna/admin/finna/webhooks/repo-push/55ae876e4d21222df298086e",
+    "_id": "55ae876e4d21222df298086e",
+    "type": "repo-push"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/webhooks.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/webhooks.json b/Allura/docs/api-rest/examples/webhooks.json
new file mode 100755
index 0000000..7b30059
--- /dev/null
+++ b/Allura/docs/api-rest/examples/webhooks.json
@@ -0,0 +1,24 @@
+{
+    "webhooks": [
+        {
+            "url": "http://localhost:8080/rest/p/finna/admin/finna/webhooks/repo-push/55ae874a4d21222df2980868",
+            "mod_date": "2015-07-21 17:54:18.066000",
+            "_id": "55ae874a4d21222df2980868",
+            "type": "repo-push",
+            "hook_url": "http://hs.dev:9999/webhooks/"
+        },
+        {
+            "url": "http://localhost:8080/rest/p/finna/admin/finna/webhooks/repo-push/55ae876e4d21222df298086e",
+            "mod_date": "2015-07-21 17:54:54.836000",
+            "_id": "55ae876e4d21222df298086e",
+            "type": "repo-push",
+            "hook_url": "http://hs.dev:9999/push-it/"
+        }
+    ],
+    "limits": {
+        "repo-push": {
+            "max": 3,
+            "used": 2
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/examples/wiki.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/wiki.json b/Allura/docs/api-rest/examples/wiki.json
new file mode 100755
index 0000000..f5c81c4
--- /dev/null
+++ b/Allura/docs/api-rest/examples/wiki.json
@@ -0,0 +1,28 @@
+{
+  "pages": [
+    "ASF Release Guidelines",
+    "Allura Deployments",
+    "Allura Wiki",
+    "Apache Allura (incubating) Wiki",
+    "Apache Allura™ (incubating) Wiki",
+    "Asking Questions",
+    "Contributing Code",
+    "Contributing to the Discussion",
+    "Extensions",
+    "FAQ",
+    "Feature Comparison",
+    "Features",
+    "Goals",
+    "Google Summer of Code",
+    "HTTP(S) Repositories",
+    "Home",
+    "Install and Run Allura - Vagrant",
+    "Notes",
+    "Our Development Model",
+    "PyCon 2014 Sprint",
+    "Themes in Allura",
+    "Videos",
+    "Webhooks",
+    "Working with Contributors"
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/resourceTypes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/resourceTypes.yaml b/Allura/docs/api-rest/resourceTypes.yaml
new file mode 100755
index 0000000..10dcb53
--- /dev/null
+++ b/Allura/docs/api-rest/resourceTypes.yaml
@@ -0,0 +1,150 @@
+- base:
+    get?:
+      responses: &standardResponses
+        200:
+          description: OK
+    put?:
+      responses: *standardResponses
+    patch?:
+      responses: *standardResponses
+    post?:
+        responses:
+          201:
+            description: Created
+    delete?:
+      responses: *standardResponses
+- baseTool:
+    get?:
+      responses:
+        200:
+          description: OK
+    post?:
+        responses:
+          201:
+            description: Created
+    delete?:
+      responses: *standardResponses
+- collection:
+    type: base
+    get:
+      is: [ pageable ]
+    post:
+- member:
+      type: base
+      get?:
+      post?:
+      put?:
+      patch?:
+      delete?:
+- tool:
+    type: member
+    get:
+      responses:
+        200:
+          body:
+            application/json:
+              schema: <<schema>>
+              example: <<example>>
+    post?:
+    put?:
+      body:
+        application/json:
+          schema: <<schema>>
+      responses:
+        200:
+          body:
+            application/json:
+              schema: <<schema>>
+    patch?:
+      body:
+        application/json:
+          schema: <<schema>>
+      responses:
+        200:
+          body:
+            application/json:
+              schema: <<schema>>
+    delete?:   
+- permissionCheck:
+    description: |
+      This is API to run permission checks. 
+      It is available on a neighborhood, project and tool level.
+      
+      This is only available to users that have 'admin' permission for corresponding neighborhood/project/tool. 
+      It requires user and perm parameters and will return JSON dict with result key, which contains boolean value, 
+      indicating if given user has perm permission to the neighborhood/project/tool.
+    get:
+      queryParameters:
+        user:
+          type: string
+          example: heiths
+          required: true
+          description: The username to check
+        perm:
+          displayName: Permission
+          required: true
+          type: string
+          example: create
+          default: read
+          enum: ["read", "admin", "create", "update"]
+      description: |
+        Get permissions for <<resourcePathName>>.
+      responses:
+        200:
+          body:
+            application/json:
+              schema: <<schemaItem>>
+- searchableCollection:
+    get:
+      queryParameters:
+        <<queryParamName>>:
+          description: Return <<resourcePathName>> that have their <<queryParamName>> matching the given value
+      responses:
+        200:
+          body:
+            application/json:
+              schema: <<schema>>
+              example: <<example>>
+- typedCollection:
+    type: collection
+    get:
+      responses:
+        200:
+          body:
+            application/json:
+              schema: <<schema>>
+              example: <<example>>
+    post:
+      body:
+        application/json:
+      responses:
+        201:
+          body:
+            application/json:
+              schema: <<schema>>
+- permission:
+    securedBy: [null, oauth_1_0]
+    description: |
+      Checks if a given user has permissions.
+    get:
+      is: [permissionTestable]
+- project:
+    type: member
+    get:
+      responses:
+        200:
+          body:
+            application/json:
+              schema: <<schema>>
+              example: <<example>>
+    put:
+      body:
+        application/json:
+          schema: <<schema>>
+      responses:
+        200:
+          body:
+            application/json:
+              schema: <<schema>>
+
+    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/blog.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/blog.json b/Allura/docs/api-rest/schemas/blog.json
new file mode 100755
index 0000000..bab80f6
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/blog.json
@@ -0,0 +1,37 @@
+{
+    "$schema": "http://json-schema.org/draft-04/schema", 
+    "type": "object", 
+    "id": "#", 
+    "properties": {
+        "count": {
+            "type": "number", 
+            "id": "count"
+        }, 
+        "posts": {
+            "items": {
+                "type": "object", 
+                "id": "0", 
+                "properties": {
+                    "url": {
+                        "type": "string", 
+                        "id": "url"
+                    }, 
+                    "title": {
+                        "type": "string", 
+                        "id": "title"
+                    }
+                }
+            }, 
+            "type": "array", 
+            "id": "posts"
+        }, 
+        "limit": {
+            "type": "number", 
+            "id": "limit"
+        }, 
+        "page": {
+            "type": "number", 
+            "id": "page"
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/blogPost.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/blogPost.json b/Allura/docs/api-rest/schemas/blogPost.json
new file mode 100755
index 0000000..f504392
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/blogPost.json
@@ -0,0 +1,75 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "id": "/",
+  "type": "object",
+  "properties": {
+    "related_artifacts": {
+      "id": "related_artifacts",
+      "type": "array",
+      "items": {}
+    },
+    "discussion_thread": {
+      "id": "discussion_thread",
+      "type": "object",
+      "properties": {
+        "_id": {
+          "id": "_id",
+          "type": "string"
+        },
+        "posts": {
+          "id": "posts",
+          "type": "array",
+          "items": {}
+        },
+        "discussion_id": {
+          "id": "discussion_id",
+          "type": "string"
+        },
+        "subject": {
+          "id": "subject",
+          "type": "string"
+        }
+      }
+    },
+    "author": {
+      "id": "author",
+      "type": "string"
+    },
+    "url": {
+      "id": "url",
+      "type": "string"
+    },
+    "text": {
+      "id": "text",
+      "type": "string"
+    },
+    "labels": {
+      "id": "labels",
+      "type": "array",
+      "items": {
+        "id": "0",
+        "type": "string"
+      }
+    },
+    "state": {
+      "id": "state",
+      "type": "string"
+    },
+    "mod_date": {
+      "id": "mod_date",
+      "type": "string"
+    },
+    "title": {
+      "id": "title",
+      "type": "string"
+    },
+    "_id": {
+      "id": "_id",
+      "type": "string"
+    },
+    "discussion_thread_url": {
+      "id": "discussion_thread_url",
+      "type": "string"
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/discussion.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/discussion.json b/Allura/docs/api-rest/schemas/discussion.json
new file mode 100755
index 0000000..8f62a2f
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/discussion.json
@@ -0,0 +1,103 @@
+{
+    "$schema": "http://json-schema.org/draft-04/schema", 
+    "type": "object", 
+    "id": "#", 
+    "properties": {
+        "count": {
+            "type": "number", 
+            "id": "count"
+        }, 
+        "forums": {
+            "items": {
+                "type": "object", 
+                "id": "0", 
+                "properties": {
+                    "num_topics": {
+                        "type": "number", 
+                        "id": "num_topics"
+                    }, 
+                    "url": {
+                        "type": "string", 
+                        "id": "url"
+                    }, 
+                    "name": {
+                        "type": "string", 
+                        "id": "name"
+                    }, 
+                    "shortname": {
+                        "type": "string", 
+                        "id": "shortname"
+                    }, 
+                    "_id": {
+                        "type": "string", 
+                        "id": "_id"
+                    }, 
+                    "last_post": {
+                        "type": "object", 
+                        "id": "last_post", 
+                        "properties": {
+                            "flagged_by": {
+                                "type": "array", 
+                                "id": "flagged_by"
+                            }, 
+                            "status": {
+                                "type": "string", 
+                                "id": "status"
+                            }, 
+                            "last_edited": {
+                                "type": "null", 
+                                "id": "last_edited"
+                            }, 
+                            "author": {
+                                "type": "string", 
+                                "id": "author"
+                            }, 
+                            "timestamp": {
+                                "type": "string", 
+                                "id": "timestamp"
+                            }, 
+                            "thread_id": {
+                                "type": "string", 
+                                "id": "thread_id"
+                            }, 
+                            "text": {
+                                "type": "string", 
+                                "id": "text"
+                            }, 
+                            "author_id": {
+                                "type": "string", 
+                                "id": "author_id"
+                            }, 
+                            "_id": {
+                                "type": "string", 
+                                "id": "_id"
+                            }, 
+                            "slug": {
+                                "type": "string", 
+                                "id": "slug"
+                            }, 
+                            "subject": {
+                                "type": "string", 
+                                "id": "subject"
+                            }
+                        }
+                    }, 
+                    "description": {
+                        "type": "string", 
+                        "id": "description"
+                    }
+                }
+            }, 
+            "type": "array", 
+            "id": "forums"
+        }, 
+        "limit": {
+            "type": "number", 
+            "id": "limit"
+        }, 
+        "page": {
+            "type": "number", 
+            "id": "page"
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/hasPermission.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/hasPermission.json b/Allura/docs/api-rest/schemas/hasPermission.json
new file mode 100755
index 0000000..c42a5be
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/hasPermission.json
@@ -0,0 +1,12 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "type": "object",
+  "name": "/",
+  "properties": {
+    "result": {
+      "type": "boolean",
+      "description": "True if a user has the permission a given permission.",
+      "name": "result"
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/link.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/link.json b/Allura/docs/api-rest/schemas/link.json
new file mode 100755
index 0000000..3089559
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/link.json
@@ -0,0 +1,12 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "type": "object",
+  "properties": {
+    "url": {
+      "type": "string"
+    }
+  },
+  "required": [
+    "url"
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/page.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/page.json b/Allura/docs/api-rest/schemas/page.json
new file mode 100755
index 0000000..d961145
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/page.json
@@ -0,0 +1,63 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema",
+  "type": "object",
+  "properties": {
+    "related_artifacts": {
+      "items": {
+        "type": ["null", "string"],
+      },
+      "type": ["null", "array"],
+      "id": "related_artifacts"
+    },
+    "attachments": {
+      "type": ["null", "array"],
+      "id": "attachments"
+    },
+    "title": {
+      "type": "string",
+      "id": "title"
+    },
+    "text": {
+      "type": ["null", "string"],
+      "id": "text"
+    },
+    "labels": {
+      "type": ["null", "array"],
+      "id": "labels"
+    },
+    "discussion_thread": {
+      "type": "object",
+      "id": "discussion_thread",
+      "properties": {
+        "_id": {
+          "type": "string",
+          "id": "_id"
+        },
+        "posts": {
+          "type": "array",
+          "id": "posts"
+        },
+        "discussion_id": {
+          "type": "string",
+          "id": "discussion_id"
+        },
+        "subject": {
+          "type": "string",
+          "id": "subject"
+        }
+      }
+    },
+    "mod_date": {
+      "type": "string",
+      "id": "mod_date"
+    },
+    "_id": {
+      "type": "string",
+      "id": "_id"
+    },
+    "discussion_thread_url": {
+      "type": "string",
+      "id": "discussion_thread_url"
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/project.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/project.json b/Allura/docs/api-rest/schemas/project.json
new file mode 100755
index 0000000..8635bba
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/project.json
@@ -0,0 +1,179 @@
+{
+    "$schema": "http://json-schema.org/draft-04/schema",
+    "type": "object",
+    "id": "#",
+    "properties": {
+        "status": {
+            "type": "string",
+            "id": "status"
+        },
+        "_id": {
+            "type": "string",
+            "id": "_id"
+        },
+        "name": {
+            "type": "string",
+            "id": "name"
+        },
+        "preferred_support_tool": {
+            "type": ["string", "null"], 
+            "id": "preferred_support_tool"
+        },
+        "preferred_support_url": {
+            "type": ["string", "null"], 
+            "id": "preferred_support_url"
+        },
+        "icon_url": {
+            "type": ["string", "null"], 
+            "id": "icon_url"
+        },
+        "labels": {
+            "type": "array",
+            "id": "labels"
+        },
+        "private": {
+            "type": "boolean",
+            "id": "private"
+        },
+        "creation_date": {
+            "type": "string",
+            "id": "creation_date"
+        },
+        "url": {
+            "type": "string",
+            "id": "url"
+        },
+        "short_description": {
+            "type": ["string", "null"], 
+            "id": "short_description"
+        },
+        "summary": {
+            "type": ["string", "null"], 
+            "id": "summary"
+        },
+        "tools": {
+            "items": {
+                "type": "object",
+                "id": "0",
+                "properties": {
+                    "mount_point": {
+                        "type": "string",
+                        "id": "mount_point"
+                    },
+                    "name": {
+                        "type": "string",
+                        "id": "name"
+                    },
+                    "label": {
+                        "type": "string",
+                        "id": "label"
+                    }
+                }
+            },
+            "type": "array",
+            "id": "tools"
+        },
+        "video_url": {
+            "type": ["string", "null"], 
+            "id": "video_url"
+        },
+        "socialnetworks": {
+            "items": {
+                "type": "object",
+                "id": "0",
+                "properties": {
+                    "accounturl": {
+                        "type": ["string", "null"], 
+                        "id": "accounturl"
+                    },
+                    "socialnetwork": {
+                        "type": ["string", "null"], 
+                        "id": "socialnetwork"
+                    }
+                }
+            },
+            "type": "array",
+            "id": "socialnetworks"
+        },
+        "moved_to_url": {
+            "type": ["string", "null"], 
+            "id": "moved_to_url"
+        },
+        "shortname": {
+            "type": "string",
+            "id": "shortname"
+        },
+        "developers": {
+            "items": {
+                "type": "object",
+                "id": "0",
+                "properties": {
+                    "url": {
+                        "type": "string",
+                        "id": "url"
+                    },
+                    "username": {
+                        "type": "string",
+                        "id": "username"
+                    },
+                    "name": {
+                        "type": "string",
+                        "id": "name"
+                    }
+                }
+            },
+            "type": "array",
+            "id": "developers"
+        },
+        "screenshots": {
+            "type": "array",
+            "id": "screenshots"
+        },
+        "external_homepage": {
+            "type": ["string", "null"], 
+            "id": "external_homepage"
+        },
+        "categories": {
+            "type": "object",
+            "id": "categories",
+            "properties": {
+                "developmentstatus": {
+                    "type": "array",
+                    "id": "developmentstatus"
+                },
+                "environment": {
+                    "type": "array",
+                    "id": "environment"
+                },
+                "language": {
+                    "type": "array",
+                    "id": "language"
+                },
+                "license": {
+                    "type": "array",
+                    "id": "license"
+                },
+                "database": {
+                    "type": "array",
+                    "id": "database"
+                },
+                "topic": {
+                    "type": "array",
+                    "id": "topic"
+                },
+                "audience": {
+                    "type": "array",
+                    "id": "audience"
+                },
+                "translation": {
+                    "type": "array",
+                    "id": "translation"
+                },
+                "os": {
+                    "type": "array",
+                    "id": "os"
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/searchedTickets.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/searchedTickets.json b/Allura/docs/api-rest/schemas/searchedTickets.json
new file mode 100755
index 0000000..cf66f55
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/searchedTickets.json
@@ -0,0 +1,210 @@
+{
+    "$schema": "http://json-schema.org/draft-04/schema", 
+    "required": [
+        "sort", 
+        "count", 
+        "filter_choices", 
+        "page", 
+        "q", 
+        "solr_error", 
+        "limit", 
+        "tickets", 
+        "filter"
+    ], 
+    "type": "object", 
+    "properties": {
+        "sort": {
+            "type": "null"
+        }, 
+        "count": {
+            "type": "number"
+        }, 
+        "filter_choices": {
+            "required": [
+                "status", 
+                "reported_by", 
+                "_milestone", 
+                "assigned_to"
+            ], 
+            "type": "object", 
+            "properties": {
+                "status": {
+                    "items": {
+                        "items": [
+                            {
+                                "type": "string"
+                            }, 
+                            {
+                                "type": "number"
+                            }
+                        ], 
+                        "type": "array"
+                    }, 
+                    "type": "array"
+                }, 
+                "reported_by": {
+                    "items": {
+                        "items": [
+                            {
+                                "type": "string"
+                            }, 
+                            {
+                                "type": "number"
+                            }
+                        ], 
+                        "type": "array"
+                    }, 
+                    "type": "array"
+                }, 
+                "_milestone": {
+                    "items": {
+                        "items": [
+                            {
+                                "type": "string"
+                            }, 
+                            {
+                                "type": "number"
+                            }
+                        ], 
+                        "type": "array"
+                    }, 
+                    "type": "array"
+                }, 
+                "assigned_to": {
+                    "items": {
+                        "items": [
+                            {
+                                "type": "string"
+                            }, 
+                            {
+                                "type": "number"
+                            }
+                        ], 
+                        "type": "array"
+                    }, 
+                    "type": "array"
+                }
+            }
+        }, 
+        "filter": {
+            "type": "object"
+        }, 
+        "q": {
+            "type": "string"
+        }, 
+        "solr_error": {
+            "type": "null"
+        }, 
+        "limit": {
+            "type": "number"
+        }, 
+        "tickets": {
+            "items": {
+                "required": [
+                    "status", 
+                    "labels", 
+                    "related_artifacts", 
+                    "attachments", 
+                    "reported_by", 
+                    "reported_by_id", 
+                    "discussion_disabled", 
+                    "private", 
+                    "summary", 
+                    "assigned_to_id", 
+                    "assigned_to", 
+                    "votes_down", 
+                    "votes_up", 
+                    "mod_date", 
+                    "_id", 
+                    "discussion_thread_url", 
+                    "ticket_num", 
+                    "custom_fields", 
+                    "created_date"
+                ], 
+                "type": "object", 
+                "properties": {
+                    "status": {
+                        "type": "string"
+                    }, 
+                    "labels": {
+                        "items": {
+                            "type": "string"
+                        }, 
+                        "type": "array"
+                    }, 
+                    "related_artifacts": {
+                        "type": "array"
+                    }, 
+                    "attachments": {
+                        "type": "array"
+                    }, 
+                    "reported_by": {
+                        "type": "string"
+                    }, 
+                    "reported_by_id": {
+                        "type": "string"
+                    }, 
+                    "discussion_disabled": {
+                        "type": "boolean"
+                    }, 
+                    "private": {
+                        "type": "boolean"
+                    }, 
+                    "summary": {
+                        "type": "string"
+                    }, 
+                    "assigned_to_id": {
+                        "type": ["string", "null"]
+                    }, 
+                    "assigned_to": {
+                        "type": ["string", "null"]
+                    }, 
+                    "votes_down": {
+                        "type": "number"
+                    }, 
+                    "votes_up": {
+                        "type": "number"
+                    }, 
+                    "mod_date": {
+                        "type": "string"
+                    }, 
+                    "_id": {
+                        "type": "string"
+                    }, 
+                    "discussion_thread_url": {
+                        "type": "string"
+                    }, 
+                    "ticket_num": {
+                        "type": "number"
+                    }, 
+                    "custom_fields": {
+                        "required": [
+                            "_component", 
+                            "_milestone", 
+                            "_reviewer"
+                        ], 
+                        "type": "object", 
+                        "properties": {
+                            "_component": {
+                                "type": "string"
+                            }, 
+                            "_milestone": {
+                                "type": "string"
+                            }, 
+                            "_reviewer": {
+                                "type": "string"
+                            }
+                        }
+                    }, 
+                    "created_date": {
+                        "type": "string"
+                    }
+                }
+            }, 
+            "type": "array"
+        }, 
+        "page": {
+            "type": "number"
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/allura/blob/247ee2a9/Allura/docs/api-rest/schemas/ticket.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/ticket.json b/Allura/docs/api-rest/schemas/ticket.json
new file mode 100755
index 0000000..48aec8d
--- /dev/null
+++ b/Allura/docs/api-rest/schemas/ticket.json
@@ -0,0 +1,180 @@
+{
+    "$schema": "http://json-schema.org/draft04/schema#",
+    "id": "/",
+    "type": "object",
+    "properties": {
+        "ticket": {
+            "id": "ticket",
+            "type": "object",
+            "properties": {
+                "status": {
+                    "id": "status",
+                    "type": "string"
+                },
+                "reported_by_id": {
+                    "id": "reported_by_id",
+                    "type": "string"
+                },
+                "related_artifacts": {
+                    "id": "related_artifacts",
+                    "type": "array",
+                    "items": {},
+                    "additionalItems": false
+                },
+                "attachments": {
+                    "id": "attachments",
+                    "type": "array",
+                    "items": {},
+                    "additionalItems": false
+                },
+                "reported_by": {
+                    "id": "reported_by",
+                    "type": "string"
+                },
+                "assigned_to": {
+                    "id": "assigned_to",
+                    "type": "string"
+                },
+                "labels": {
+                    "id": "labels",
+                    "type": "array",
+                    "items": {
+                        "id": "1",
+                        "type": "string"
+                    },
+                    "additionalItems": false
+                },
+                "discussion_disabled": {
+                    "id": "discussion_disabled",
+                    "type": "boolean"
+                },
+                "assigned_to_id": {
+                    "id": "assigned_to_id",
+                    "type": "string"
+                },
+                "private": {
+                    "id": "private",
+                    "type": "boolean"
+                },
+                "summary": {
+                    "id": "summary",
+                    "type": "string"
+                },
+                "description": {
+                    "id": "description",
+                    "type": "string"
+                },
+                "discussion_thread": {
+                    "id": "discussion_thread",
+                    "type": "object",
+                    "properties": {
+                        "_id": {
+                            "id": "_id",
+                            "type": "string"
+                        },
+                        "posts": {
+                            "id": "posts",
+                            "type": "array",
+                            "items": {
+                                "id": "2",
+                                "type": "object",
+                                "properties": {
+                                    "text": {
+                                        "id": "text",
+                                        "type": "string"
+                                    },
+                                    "attachments": {
+                                        "id": "attachments",
+                                        "type": "array",
+                                        "items": {},
+                                        "additionalItems": false
+                                    },
+                                    "author": {
+                                        "id": "author",
+                                        "type": "string"
+                                    },
+                                    "timestamp": {
+                                        "id": "timestamp",
+                                        "type": "string"
+                                    },
+                                    "last_edited": {
+                                        "id": "last_edited",
+                                        "type": "null"
+                                    },
+                                    "slug": {
+                                        "id": "slug",
+                                        "type": "string"
+                                    },
+                                    "subject": {
+                                        "id": "subject",
+                                        "type": "string"
+                                    }
+                                },
+                                "additionalProperties": false
+                            },
+                            "additionalItems": false
+                        },
+                        "discussion_id": {
+                            "id": "discussion_id",
+                            "type": "string"
+                        },
+                        "subject": {
+                            "id": "subject",
+                            "type": "string"
+                        }
+                    },
+                    "additionalProperties": false
+                },
+                "mod_date": {
+                    "id": "mod_date",
+                    "type": "string"
+                },
+                "votes_down": {
+                    "id": "votes_down",
+                    "type": "integer"
+                },
+                "votes_up": {
+                    "id": "votes_up",
+                    "type": "integer"
+                },
+                "_id": {
+                    "id": "_id",
+                    "type": "string"
+                },
+                "discussion_thread_url": {
+                    "id": "discussion_thread_url",
+                    "type": "string"
+                },
+                "ticket_num": {
+                    "id": "ticket_num",
+                    "type": "integer"
+                },
+                "custom_fields": {
+                    "id": "custom_fields",
+                    "type": "object",
+                    "properties": {
+                        "_component": {
+                            "id": "_component",
+                            "type": "string"
+                        },
+                        "_milestone": {
+                            "id": "_milestone",
+                            "type": "string"
+                        },
+                        "_reviewer": {
+                            "id": "_reviewer",
+                            "type": "string"
+                        }
+                    },
+                    "additionalProperties": false
+                },
+                "created_date": {
+                    "id": "created_date",
+                    "type": "string"
+                }
+            },
+            "additionalProperties": false
+        }
+    },
+    "additionalProperties": false
+}
\ No newline at end of file


[05/11] allura git commit: [#6797] fix indentation, so not all nested under has_access

Posted by br...@apache.org.
[#6797] fix indentation, so not all nested under has_access


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/929a3f2e
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/929a3f2e
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/929a3f2e

Branch: refs/heads/db/6797
Commit: 929a3f2e2f3deeadaefb62471f37825e61aff666
Parents: 5660140
Author: Dave Brondsema <da...@brondsema.net>
Authored: Mon Aug 10 17:42:05 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Aug 11 12:03:52 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/api.raml | 906 ++++++++++++++++++-------------------
 1 file changed, 453 insertions(+), 453 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/929a3f2e/Allura/docs/api-rest/api.raml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/api.raml b/Allura/docs/api-rest/api.raml
index 6f040e7..b123871 100755
--- a/Allura/docs/api-rest/api.raml
+++ b/Allura/docs/api-rest/api.raml
@@ -69,152 +69,210 @@ baseUriParameters:
               default: read
               enum: [read, admin, create, update]
 
-        /{link}:
+      /{link}:
+        description: |
+          Represents the External Link tool.
+        type: {
+            tool: {
+            example: !include examples/link.json,
+            schema: !include schemas/link.json
+            }
+          }
+
+        get:
           description: |
-            Represents the External Link tool.
-          type: {
-              tool: {
-              example: !include examples/link.json,
-              schema: !include schemas/link.json
-              }
+            Returns the existing url.
+
+        post:
+          description: |
+            Updates the url. *authentication required*.
+          body:
+            application/x-www-form-urlencoded:
+              formParameters:
+                url:
+                  description: |
+                    The url you would like to update to.
+                  type: string
+                  example: http://google.com
+
+      /{blog}:
+        type: {
+            tool: {
+            example: !include examples/blog.json,
+            schema: !include schemas/blog.json
             }
+          }
+        description: |
+          Represents the **Blog tool**
 
-          get:
-            description: |
-              Returns the existing url.
+        displayName: Blog
+        uriParameters:
+         blog:
+           displayName: Blog Name
+           type: string
+           example: blog
 
-          post:
-            description: |
-              Updates the url. *authentication required*.
-            body:
-              application/x-www-form-urlencoded:
-                formParameters:
-                  url:
-                    description: |
-                      The url you would like to update to.
-                    type: string
-                    example: http://google.com
+        get:
+          description: |
+            Returns a list of posts, including title and API url.
+          responses:
+            200:
+              body:
+                application/json:
+                  schema: !include schemas/blog.json
+                  example: !include examples/blog.json
+        post:
+          description: |
+            Creates a new blog post.
+          body:
+            application/x-www-form-urlencoded:
+              formParameters:
+                title:
+                  description: |
+                    The title of the post.
+                  type: string
+                  example: New API docs released!
+                text:
+                  description: |
+                    The text of the post.
+                  type: string
+                  example: Lots of text here describing apis!\nThat is all.
+                labels:
+                  description: |
+                    Labels of the post -- comma seperated strings
+                  type: string
+                  example: api,development
+                state:
+                  description: |
+                    Draft or published.
+                  enum: [draft, published]
+                  type: string
+                  example: published
 
-        /{blog}:
-          type: {
+        /{year}/{month}/{title}:
+            description: Represents a blog post entry.
+            type: {
               tool: {
-              example: !include examples/blog.json,
-              schema: !include schemas/blog.json
+              example: !include examples/blogPost.json,
+              schema: !include schemas/blogPost.json
               }
             }
-          description: |
-            Represents the **Blog tool**
+            displayName: Blog Post
+            uriParameters:
+             year:
+               displayName: Year
+               type: number
+               example: 2015
+             month:
+               displayName: Month
+               type: number
+               example: 04
+             title:
+               displayName: Title
+               type: string
+               example: project-insights
 
-          displayName: Blog
-          uriParameters:
-           blog:
-             displayName: Blog Name
-             type: string
-             example: blog
+            post:
+              description: |
+                Updates an existing blog post.
+              body:
+                application/x-www-form-urlencoded:
+                  formParameters:
+                    title:
+                      description: |
+                        The title of the post.
+                      type: string
+                    text:
+                      description: |
+                        The text of the post.
+                      type: string
+                    labels:
+                      description: |
+                        Labels of the post -- comma seperated strings
+                      type: string
+                    state:
+                      description: |
+                        Draft or published.
+                      enum: [draft, published]
+                      type: string
 
+        /has_access:
+          type: permission
           get:
-            description: |
-              Returns a list of posts, including title and API url.
-            responses:
-              200:
-                body:
-                  application/json:
-                    schema: !include schemas/blog.json
-                    example: !include examples/blog.json
-          post:
-            description: |
-              Creates a new blog post.
-            body:
-              application/x-www-form-urlencoded:
-                formParameters:
-                  title:
-                    description: |
-                      The title of the post.
-                    type: string
-                    example: New API docs released!
-                  text:
-                    description: |
-                      The text of the post.
-                    type: string
-                    example: Lots of text here describing apis!\nThat is all.
-                  labels:
-                    description: |
-                      Labels of the post -- comma seperated strings
-                    type: string
-                    example: api,development
-                  state:
-                    description: |
-                      Draft or published.
-                    enum: [draft, published]
-                    type: string
-                    example: published
-
-          /{year}/{month}/{title}:
-              description: Represents a blog post entry.
-              type: {
-                tool: {
-                example: !include examples/blogPost.json,
-                schema: !include schemas/blogPost.json
-                }
-              }
-              displayName: Blog Post
-              uriParameters:
-               year:
-                 displayName: Year
-                 type: number
-                 example: 2015
-               month:
-                 displayName: Month
-                 type: number
-                 example: 04
-               title:
-                 displayName: Title
-                 type: string
-                 example: project-insights
+            queryParameters:
+              perm:
+                displayName: Permission
+                required: true
+                type: string
+                example: post
+                default: read
+                enum: [admin, configure, moderate, post, unmoderated_post, read, write]
+
+      /{forum}:
+        description: |
+          A list of forums
+        type: {
+            tool: {
+            example: !include examples/page.json,
+            schema: !include schemas/page.json
+            }
+          }
 
-              post:
-                description: |
-                  Updates an existing blog post.
-                body:
-                  application/x-www-form-urlencoded:
-                    formParameters:
-                      title:
-                        description: |
-                          The title of the post.
-                        type: string
-                      text:
-                        description: |
-                          The text of the post.
-                        type: string
-                      labels:
-                        description: |
-                          Labels of the post -- comma seperated strings
-                        type: string
-                      state:
-                        description: |
-                          Draft or published.
-                        enum: [draft, published]
-                        type: string
+        displayName: forum
+        uriParameters:
+         forum:
+           displayName: Forum Name
+           type: string
+           example: general
+           description: |
+             Returns a list of forums, including name, description, num_posts, API URL, and last_post details
+
+             To view more than 100 threads, or 100 posts in a thread, use the pagination support of the API by adding ?page=1 etc. to the URL.
 
-          /has_access:
-            type: permission
+        /forum:
+          description: |
+            returns a limited list of topics in the forum, with fields for subject, num_replies, API URL, and last_post
+          get:
+          /{slug}:
+            description: |
+              returns a limited list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
             get:
-              queryParameters:
-                perm:
-                  displayName: Permission
-                  required: true
-                  type: string
-                  example: post
-                  default: read
-                  enum: [admin, configure, moderate, post, unmoderated_post, read, write]
+
+        /has_access:
+          type: permission
+          get:
+            queryParameters:
+              perm:
+                displayName: Permission
+                required: true
+                type: string
+                example: post
+                default: read
+                enum: [admin, configure, moderate, post, unmoderated_post, read]
+
+      /{discussion}:
+        description: |
+          Represents the **Discussion Tool**.
+        type: {
+            tool: {
+            schema: !include schemas/discussion.json,
+            example: !include examples/discussion.json
+
+            }
+          }
+
+        displayName: Discussion
+        uriParameters:
+         discussion:
+           displayName: Discussion Name
+           type: string
+           example: "discussion"
 
         /{forum}:
-          description: |
-            A list of forums
           type: {
               tool: {
-              example: !include examples/page.json,
-              schema: !include schemas/page.json
+                example: !include examples/page.json,
+                schema: !include schemas/page.json
               }
             }
 
@@ -224,216 +282,212 @@ baseUriParameters:
              displayName: Forum Name
              type: string
              example: general
-             description: |
-               Returns a list of forums, including name, description, num_posts, API URL, and last_post details
-
-               To view more than 100 threads, or 100 posts in a thread, use the pagination support of the API by adding ?page=1 etc. to the URL.
-
-          /forum:
-            description: |
-              returns a limited list of topics in the forum, with fields for subject, num_replies, API URL, and last_post
-            get:
-            /{slug}:
-              description: |
-                returns a limited list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
-              get:
-
-          /has_access:
-            type: permission
-            get:
-              queryParameters:
-                perm:
-                  displayName: Permission
-                  required: true
-                  type: string
-                  example: post
-                  default: read
-                  enum: [admin, configure, moderate, post, unmoderated_post, read]
 
-        /{discussion}:
-          description: |
-            Represents the **Discussion Tool**.
-          type: {
-              tool: {
-              schema: !include schemas/discussion.json,
-              example: !include examples/discussion.json
+        /has_access:
+          type: permission
 
-              }
+      /{wiki}:
+        description: |
+          Represents the **Wiki Tool**.
+        type: {
+            tool: {
+            example: !include examples/wiki.json,
+            schema: !include schemas/wiki.json
             }
+          }
 
-          displayName: Discussion
-          uriParameters:
-           discussion:
-             displayName: Discussion Name
-             type: string
-             example: "discussion"
-
-          /{forum}:
-            type: {
-                tool: {
-                  example: !include examples/page.json,
-                  schema: !include schemas/page.json
-                }
-              }
-
-            displayName: forum
-            uriParameters:
-             forum:
-               displayName: Forum Name
-               type: string
-               example: general
+        displayName: Wiki
+        uriParameters:
+         wiki:
+           displayName: Wiki Name
+           type: string
+           example: wiki
 
-          /has_access:
-            type: permission
 
-        /{wiki}:
-          description: |
-            Represents the **Wiki Tool**.
+        /{title}:
           type: {
               tool: {
-              example: !include examples/wiki.json,
-              schema: !include schemas/wiki.json
+              example: !include examples/page.json,
+              schema: !include schemas/page.json
               }
             }
 
-          displayName: Wiki
+          displayName: Title
           uriParameters:
-           wiki:
-             displayName: Wiki Name
+           title:
+             displayName: Wiki Title
              type: string
-             example: wiki
-
+             example: Extensions
+          get:
+            description: |
+              returns a JSON representation of a page
+          post:
+            description: |
+              Creates or updates the titled page.
+            body:
+              application/x-www-form-urlencoded:
+                formParameters:
+                  text:
+                    description: |
+                      Page text.
+                    type: string
+                  labels:
+                    description: |
+                     Comma-separated list of page labels.
+                    type: string
 
-          /{title}:
-            type: {
-                tool: {
-                example: !include examples/page.json,
-                schema: !include schemas/page.json
-                }
-              }
 
-            displayName: Title
-            uriParameters:
-             title:
-               displayName: Wiki Title
-               type: string
-               example: Extensions
-            get:
-              description: |
-                returns a JSON representation of a page
-            post:
-              description: |
-                Creates or updates the titled page.
-              body:
-                application/x-www-form-urlencoded:
-                  formParameters:
-                    text:
-                      description: |
-                        Page text.
-                      type: string
-                    labels:
-                      description: |
-                       Comma-separated list of page labels.
-                      type: string
+        /has_access:
+          type: permission
+          get:
+            queryParameters:
+              perm:
+                displayName: Permission
+                required: true
+                type: string
+                example: post
+                default: read
+                enum: [admin, configure, moderate, post, unmoderated_post, read, create, delete, edit]
+
+      /{tracker}:
+        description: |
+          Represents the **Ticket Tracker Tool**.
+        type: {
+            tool: {
+            example: !include examples/tickets.json,
+            schema: !include schemas/ticket.json
+            }
+          }
+        is: [pageable]
 
+        displayName: Tracker Url
+        uriParameters:
+         tracker:
+           displayName: Tracker Name
+           type: string
+           example: tickets
 
-          /has_access:
-            type: permission
-            get:
-              queryParameters:
-                perm:
-                  displayName: Permission
-                  required: true
-                  type: string
-                  example: post
-                  default: read
-                  enum: [admin, configure, moderate, post, unmoderated_post, read, create, delete, edit]
-
-        /{tracker}:
-          description: |
-            Represents the **Ticket Tracker Tool**.
-          type: {
-              tool: {
-              example: !include examples/tickets.json,
-              schema: !include schemas/ticket.json
-              }
-            }
+        get:
           is: [pageable]
+          description: |
+            Get a list of tickets
 
-          displayName: Tracker Url
+        /_discuss/thread/{threadId}:
           uriParameters:
-           tracker:
-             displayName: Tracker Name
+           threadId:
+             displayName: Thread ID
              type: string
-             example: tickets
+             example: f78b98a0
 
           get:
-            is: [pageable]
             description: |
-              Get a list of tickets
-
-          /_discuss/thread/{threadId}:
+              returns summary information about a thread, including the posts in a thread
+          /{slug}:
             uriParameters:
-             threadId:
-               displayName: Thread ID
+             slug:
+               displayName: Slug
                type: string
-               example: f78b98a0
-
+               example: 9133
             get:
               description: |
-                returns summary information about a thread, including the posts in a thread
-            /{slug}:
-              uriParameters:
-               slug:
-                 displayName: Slug
-                 type: string
-                 example: 9133
-              get:
-                description: |
-                  returns detailed information about a post
-              /reply:
-                description: |
-                  create a threaded reply to the given post
-                post:
-                  body:
-                    application/x-www-form-urlencoded:
-                      formParameters:
-                        text:
-                          description: the text of the reply
-                          example: |
-                            I *agree* with you.
-                          required: true
-                          type: string
-            /new:
+                returns detailed information about a post
+            /reply:
               description: |
-                create a post in the given thread
+                create a threaded reply to the given post
               post:
                 body:
                   application/x-www-form-urlencoded:
                     formParameters:
                       text:
-                        description: The text of the new post
+                        description: the text of the reply
                         example: |
-                          This is a new post!
+                          I *agree* with you.
                         required: true
                         type: string
+          /new:
+            description: |
+              create a post in the given thread
+            post:
+              body:
+                application/x-www-form-urlencoded:
+                  formParameters:
+                    text:
+                      description: The text of the new post
+                      example: |
+                        This is a new post!
+                      required: true
+                      type: string
 
-          /search:
-            type: {
-              searchableCollection: {
-              queryParamName: q,
-              schema: !include schemas/searchedTickets.json,
-              example: !include examples/searchedTickets.json
-              }
+        /search:
+          type: {
+            searchableCollection: {
+            queryParamName: q,
+            schema: !include schemas/searchedTickets.json,
+            example: !include examples/searchedTickets.json
             }
-            is: [ pageable]
+          }
+          is: [ pageable]
 
-          /new:
+        /new:
+          description: |
+            Creates a new ticket.
+          post:
+            body:
+              # FIXME?
+              application/x-www-form-urlencoded:
+                formParameters:
+                  access_token:
+                    description: "The access token provided by the authentication application"
+                    required: true
+                    type: string
+                  ticket_form.summary:
+                    description: Ticket title
+                    type: string
+                    required: false
+                  ticket_form.description:
+                    description: ticket description
+                    type: string
+                    required: false
+                  ticket_form.assigned_to::
+                    type: string
+                    required: false
+                    description: username of ticket assignee
+                  ticket_form.labels:
+                    type: string
+                    required: false
+                    description:  comma-separated list of ticket labels
+                  ticket_form.attachment:
+                    type: file
+                    description:  (optional) attachment
+                    required: false
+                  ticket_form.custom field name:
+                    description:  custom field value
+                    type: string
+                    required: false
+
+        /{ticketNumber}:
+          type: {
+            tool: {
+            example: !include examples/ticket.json,
+            schema: !include schemas/ticket.json
+
+            }
+          }
+          displayName: Ticket Number
+          uriParameters:
+            ticketNumber:
+              example: 1
+              description: |
+                Get a details of a ticket.
+
+          /save:
             description: |
-              Creates a new ticket.
+              updates an existing ticket
+              parameters are the same as /rest/p/project_name/mount_point/new
+
             post:
               body:
-                # FIXME?
+                # form?
                 application/x-www-form-urlencoded:
                   formParameters:
                     access_token:
@@ -465,117 +519,84 @@ baseUriParameters:
                       type: string
                       required: false
 
-          /{ticketNumber}:
-            type: {
-              tool: {
-              example: !include examples/ticket.json,
-              schema: !include schemas/ticket.json
-
-              }
-            }
-            displayName: Ticket Number
-            uriParameters:
-              ticketNumber:
-                example: 1
-                description: |
-                  Get a details of a ticket.
-
-            /save:
-              description: |
-                updates an existing ticket
-                parameters are the same as /rest/p/project_name/mount_point/new
-
-              post:
-                body:
-                  # form?
-                  application/x-www-form-urlencoded:
-                    formParameters:
-                      access_token:
-                        description: "The access token provided by the authentication application"
-                        required: true
-                        type: string
-                      ticket_form.summary:
-                        description: Ticket title
-                        type: string
-                        required: false
-                      ticket_form.description:
-                        description: ticket description
-                        type: string
-                        required: false
-                      ticket_form.assigned_to::
-                        type: string
-                        required: false
-                        description: username of ticket assignee
-                      ticket_form.labels:
-                        type: string
-                        required: false
-                        description:  comma-separated list of ticket labels
-                      ticket_form.attachment:
-                        type: file
-                        description:  (optional) attachment
-                        required: false
-                      ticket_form.custom field name:
-                        description:  custom field value
-                        type: string
-                        required: false
+        /has_access:
+          type: permission
+          get:
+            queryParameters:
+              perm:
+                displayName: Permission
+                required: true
+                type: string
+                example: post
+                default: read
+                enum: [admin, configure, moderate, post, unmoderated_post, read, create, delete, update, save_searches]
 
-          /has_access:
-            type: permission
-            get:
-              queryParameters:
-                perm:
-                  displayName: Permission
-                  required: true
-                  type: string
-                  example: post
-                  default: read
-                  enum: [admin, configure, moderate, post, unmoderated_post, read, create, delete, update, save_searches]
 
+      /admin:
+        description: |
+          Endpoints for **project exporting** and managing **webhooks**
 
-        /admin:
+        /export:
           description: |
-            Endpoints for **project exporting** and managing **webhooks**
-
-          /export:
+            Generates a full bulk export of your tool(s) in the same format as the API for individual access. Authentication required. Here is an [example shell](https://forge-allura.apache.org/p/allura/git/ci/master/tree/scripts/project_export) script using these APIs, suitable to run as a cron job.
+          post:
             description: |
-              Generates a full bulk export of your tool(s) in the same format as the API for individual access. Authentication required. Here is an [example shell](https://forge-allura.apache.org/p/allura/git/ci/master/tree/scripts/project_export) script using these APIs, suitable to run as a cron job.
-            post:
-              description: |
-                Submits an export job
+              Submits an export job
 
-                **400 Bad Request:** tools parameter not provided or is invalid
-                **503 Service Unavailable:** an export job is already running
-                **200 OK:** job submitted. Body will be: *{"status": "in progress", "filename": FILENAME}*
-          /export_status:
+              **400 Bad Request:** tools parameter not provided or is invalid
+              **503 Service Unavailable:** an export job is already running
+              **200 OK:** job submitted. Body will be: *{"status": "in progress", "filename": FILENAME}*
+        /export_status:
+          description: |
+            Check status of a bulk export job
+          get:
             description: |
-              Check status of a bulk export job
-            get:
-              description: |
-                Returns status: busy or ready
-
-          /{project}/webhooks:
-              type: {
-                typedCollection: {
-                example: !include examples/webhooks.json,
-                schema: !include schemas/webhook.json
-                }
+              Returns status: busy or ready
+
+        /{project}/webhooks:
+            type: {
+              typedCollection: {
+              example: !include examples/webhooks.json,
+              schema: !include schemas/webhook.json
               }
-              description: |
-                This is to manage webhooks programatically. See the [Webhook docs](https://forge-allura.apache.org/p/allura/wiki/Webhooks/) for more information.
+            }
+            description: |
+              This is to manage webhooks programatically. See the [Webhook docs](https://forge-allura.apache.org/p/allura/wiki/Webhooks/) for more information.
 
-                The webhook payloads and signature verification method are documented at https://forge-allura.apache.org/p/allura/wiki/Webhooks/
+              The webhook payloads and signature verification method are documented at https://forge-allura.apache.org/p/allura/wiki/Webhooks/
 
 
-              /{type}:
+            /{type}:
+              uriParameters:
+                type:
+                  example: repo-push
+                  enum: [repo-push]
+                  description: |
+                    Allura supports one type of webhook for the moment - repo-push, triggered when a repository receives new commits. It is supported for Git, Mercurial and SVN repositories.
+              post:
+                description: |
+                  Create a new webhook.
+                body:
+                  application/x-www-form-urlencoded:
+                    formParameters:
+                      url:
+                        description: |
+                          The url to call when the the webhook is triggered.
+                        required: true
+                        type: string
+              /{id}:
                 uriParameters:
-                  type:
-                    example: repo-push
-                    enum: [repo-push]
+                  id:
+                    type: string
                     description: |
-                      Allura supports one type of webhook for the moment - repo-push, triggered when a repository receives new commits. It is supported for Git, Mercurial and SVN repositories.
+                      Unique identifier for a webhook.
+
+                get:
+                  description: |
+                    View a webhook
                 post:
                   description: |
-                    Create a new webhook.
+                    Update an existing webhook
                   body:
                     application/x-www-form-urlencoded:
                       formParameters:
@@ -584,72 +605,51 @@ baseUriParameters:
                             The url to call when the the webhook is triggered.
                           required: true
                           type: string
-                /{id}:
-                  uriParameters:
-                    id:
-                      type: string
-                      description: |
-                        Unique identifier for a webhook.
+                        secret:
+                          description: |
+                            Optionally supply your own secret.
 
-                  get:
+                            Note: DO NOT ever expose your secret!
+                          required: false
+                          type: string
+                delete:
+                  description: |
+                    Delete an existing webhook
+        /install_tool:
+          description: |
+            Adds a new tool to the project. *Authentication Required*.
+
+            returns dict with two fields:
+            success: False if error is occurred, otherwise True
+            info: success or error message
+          post:
+            body:
+              application/x-www-form-urlencoded:
+                formParameters:
+                  tool:
+                    description: Tool name that you want to install.
+                    example: tickets
+                    enum: [tickets, link, git, svn, mercurial, blog, discussion, subproject, wiki]
+                    required: true
+                    type: string
+                  mount_point:
                     description: |
-                      View a webhook
-                  post:
+                      The section of the url relitive to your project. For example: /p/your_project/{mount_point}
+                    example: git
+                    type: string
+                    required: true
+                  mount_label:
                     description: |
-                      Update an existing webhook
-                    body:
-                      application/x-www-form-urlencoded:
-                        formParameters:
-                          url:
-                            description: |
-                              The url to call when the the webhook is triggered.
-                            required: true
-                            type: string
-                          secret:
-                            description: |
-                              Optionally supply your own secret.
-
-                              Note: DO NOT ever expose your secret!
-                            required: false
-                            type: string
-                  delete:
+                      How your tool will be displayed in your project (like a "nice name" for the tool).
+                    example: Git
+                    type: string
+                    required: true
+                  order:
+                    type: string
+                    enum: [first, last, alpha_tool]
+                    required: false
                     description: |
-                      Delete an existing webhook
-          /install_tool:
-            description: |
-              Adds a new tool to the project. *Authentication Required*.
-
-              returns dict with two fields:
-              success: False if error is occurred, otherwise True
-              info: success or error message
-            post:
-              body:
-                application/x-www-form-urlencoded:
-                  formParameters:
-                    tool:
-                      description: Tool name that you want to install.
-                      example: tickets
-                      enum: [tickets, link, git, svn, mercurial, blog, discussion, subproject, wiki]
-                      required: true
-                      type: string
-                    mount_point:
-                      description: |
-                        The section of the url relitive to your project. For example: /p/your_project/{mount_point}
-                      example: git
-                      type: string
-                      required: true
-                    mount_label:
-                      description: |
-                        How your tool will be displayed in your project (like a "nice name" for the tool).
-                      example: Git
-                      type: string
-                      required: true
-                    order:
-                      type: string
-                      enum: [first, last, alpha_tool]
-                      required: false
-                      description: |
-                        "first", "last", or "alpha_tool" for position with respect to existing tools (or existing tools of the same type for "alpha_tool")
+                      "first", "last", or "alpha_tool" for position with respect to existing tools (or existing tools of the same type for "alpha_tool")
 
 /u/{username}:
     description: |


[06/11] allura git commit: [#6797] fix incorrect includes. Combine forum & discussion endpoints into one and fix up

Posted by br...@apache.org.
[#6797] fix incorrect includes.  Combine forum & discussion endpoints into one and fix up


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/2866eba4
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/2866eba4
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/2866eba4

Branch: refs/heads/db/6797
Commit: 2866eba4a0c0b7063cb2ed09c452ea17a1fa18ca
Parents: 929a3f2
Author: Dave Brondsema <da...@brondsema.net>
Authored: Mon Aug 10 18:30:01 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Aug 11 12:03:58 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/api.raml | 105 ++++++++++++++++---------------------
 1 file changed, 45 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/2866eba4/Allura/docs/api-rest/api.raml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/api.raml b/Allura/docs/api-rest/api.raml
index b123871..78402a2 100755
--- a/Allura/docs/api-rest/api.raml
+++ b/Allura/docs/api-rest/api.raml
@@ -115,12 +115,6 @@ baseUriParameters:
         get:
           description: |
             Returns a list of posts, including title and API url.
-          responses:
-            200:
-              body:
-                application/json:
-                  schema: !include schemas/blog.json
-                  example: !include examples/blog.json
         post:
           description: |
             Creates a new blog post.
@@ -208,74 +202,37 @@ baseUriParameters:
                 default: read
                 enum: [admin, configure, moderate, post, unmoderated_post, read, write]
 
-      /{forum}:
-        description: |
-          A list of forums
-        type: {
-            tool: {
-            example: !include examples/page.json,
-            schema: !include schemas/page.json
-            }
-          }
-
-        displayName: forum
-        uriParameters:
-         forum:
-           displayName: Forum Name
-           type: string
-           example: general
-           description: |
-             Returns a list of forums, including name, description, num_posts, API URL, and last_post details
-
-             To view more than 100 threads, or 100 posts in a thread, use the pagination support of the API by adding ?page=1 etc. to the URL.
-
-        /forum:
-          description: |
-            returns a limited list of topics in the forum, with fields for subject, num_replies, API URL, and last_post
-          get:
-          /{slug}:
-            description: |
-              returns a limited list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
-            get:
-
-        /has_access:
-          type: permission
-          get:
-            queryParameters:
-              perm:
-                displayName: Permission
-                required: true
-                type: string
-                example: post
-                default: read
-                enum: [admin, configure, moderate, post, unmoderated_post, read]
-
       /{discussion}:
         description: |
           Represents the **Discussion Tool**.
         type: {
-            tool: {
+          tool: {
             schema: !include schemas/discussion.json,
             example: !include examples/discussion.json
-
             }
           }
 
         displayName: Discussion
         uriParameters:
          discussion:
-           displayName: Discussion Name
+           displayName: Discussion Tool Name
            type: string
            example: "discussion"
+        get:
+          description: |
+            Returns a list of forums, including name, description, num_topics, and last_post details
+          is: [pageable]
 
         /{forum}:
+          description: |
+            Represents a forum within a Discussion tool.
           type: {
-              tool: {
-                example: !include examples/page.json,
-                schema: !include schemas/page.json
-              }
+            tool: {
+              # FIXME
+              example: !include examples/page.json,
+              schema: !include schemas/page.json
             }
-
+          }
           displayName: forum
           uriParameters:
            forum:
@@ -283,8 +240,31 @@ baseUriParameters:
              type: string
              example: general
 
+          get:
+            is: [pageable]
+            description: |
+              returns a limited list of topics in the forum, with fields for subject, num_replies, API URL, and last_post
+              To view more than 100 threads, or 100 posts in a thread, use the pagination support of the API by adding ?page=1 etc. to the URL.
+
+          /thread/{thread}:
+            description: |
+              Represents a thread of posts.
+            get:
+              is: [pageable]
+              description: |
+                returns a list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
+
         /has_access:
           type: permission
+          get:
+            queryParameters:
+              perm:
+                displayName: Permission
+                required: true
+                type: string
+                example: post
+                default: read
+                enum: [admin, configure, moderate, post, unmoderated_post, read]
 
       /{wiki}:
         description: |
@@ -355,7 +335,7 @@ baseUriParameters:
         type: {
             tool: {
             example: !include examples/tickets.json,
-            schema: !include schemas/ticket.json
+            schema: !include schemas/tickets.json
             }
           }
         is: [pageable]
@@ -470,7 +450,6 @@ baseUriParameters:
             tool: {
             example: !include examples/ticket.json,
             schema: !include schemas/ticket.json
-
             }
           }
           displayName: Ticket Number
@@ -557,7 +536,7 @@ baseUriParameters:
             type: {
               typedCollection: {
               example: !include examples/webhooks.json,
-              schema: !include schemas/webhook.json
+              schema: !include schemas/webhooks.json
               }
             }
             description: |
@@ -585,6 +564,12 @@ baseUriParameters:
                         required: true
                         type: string
               /{id}:
+                type: {
+                  tool: {
+                  example: !include examples/webhook.json,
+                  schema: !include schemas/webhook.json
+                  }
+                }
                 uriParameters:
                   id:
                     type: string
@@ -634,7 +619,7 @@ baseUriParameters:
                     type: string
                   mount_point:
                     description: |
-                      The section of the url relitive to your project. For example: /p/your_project/{mount_point}
+                      The section of the url relative to your project. For example: /p/your_project/{mount_point}
                     example: git
                     type: string
                     required: true


[11/11] allura git commit: [#6797] replace custom security (which actually breaks Mulesoft api "try it") with bearer token headers

Posted by br...@apache.org.
[#6797] replace custom security (which actually breaks Mulesoft api "try it") with bearer token headers


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/f864c018
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/f864c018
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/f864c018

Branch: refs/heads/db/6797
Commit: f864c018dbcf66c07f91cf0159ef01a2fc500bf0
Parents: 56d8d38
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Aug 13 16:01:20 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Thu Aug 13 16:01:20 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/api.raml             | 25 ++++++++++++-----
 Allura/docs/api-rest/resourceTypes.yaml   | 12 ++++----
 Allura/docs/api-rest/securitySchemes.yaml | 39 +++++++++++---------------
 Allura/docs/api-rest/traits.yaml          | 13 ++++++++-
 4 files changed, 53 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/f864c018/Allura/docs/api-rest/api.raml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/api.raml b/Allura/docs/api-rest/api.raml
index 2d9b211..f501679 100755
--- a/Allura/docs/api-rest/api.raml
+++ b/Allura/docs/api-rest/api.raml
@@ -3,7 +3,7 @@
 title: Apache Allura
 version: 1
 baseUri: https://{domain}/rest
-securedBy: [null, oauth_1_0, oauth_bearer_token]
+securedBy: [null, oauth_1_0]
 
 resourceTypes: !include resourceTypes.yaml
 traits: !include traits.yaml
@@ -15,8 +15,6 @@ baseUriParameters:
     example: "forge-allura.apache.org"
     default: "forge-allura.apache.org"
 
-
-
 /{neighborhood}:
     description: |
       Neighborhoods are groups of logically related projects, which have the same default options.
@@ -107,6 +105,7 @@ baseUriParameters:
           post:
             description: |
               Creates or updates the titled page.
+            is: [ bearerAuth ]
             body:
               application/x-www-form-urlencoded:
                 formParameters:
@@ -141,8 +140,6 @@ baseUriParameters:
             schema: !include schemas/tickets.json
             }
           }
-        is: [pageable]
-
         displayName: Tracker Url
         uriParameters:
          tracker:
@@ -165,6 +162,7 @@ baseUriParameters:
           get:
             description: |
               returns summary information about a thread, including the posts in a thread
+            is: [ bearerAuth ]
           /{slug}:
             uriParameters:
              slug:
@@ -174,10 +172,12 @@ baseUriParameters:
             get:
               description: |
                 returns detailed information about a post
+              is: [ bearerAuth ]
             /reply:
               description: |
                 create a threaded reply to the given post
               post:
+                is: [ bearerAuth ]
                 body:
                   application/x-www-form-urlencoded:
                     formParameters:
@@ -191,6 +191,7 @@ baseUriParameters:
             description: |
               create a post in the given thread
             post:
+              is: [ bearerAuth ]
               body:
                 application/x-www-form-urlencoded:
                   formParameters:
@@ -215,6 +216,7 @@ baseUriParameters:
           description: |
             Creates a new ticket.
           post:
+            is: [ bearerAuth ]
             body:
               application/x-www-form-urlencoded:
                 formParameters:
@@ -267,6 +269,7 @@ baseUriParameters:
               parameters are the same as /rest/p/project_name/mount_point/new
 
             post:
+              is: [ bearerAuth ]
               body:
                 application/x-www-form-urlencoded:
                   formParameters:
@@ -360,7 +363,7 @@ baseUriParameters:
             description: |
               Represents a thread of posts.
             get:
-              is: [pageable]
+              is: [pageable, bearerAuth]
               description: |
                 returns a list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
 
@@ -399,6 +402,7 @@ baseUriParameters:
         post:
           description: |
             Creates a new blog post.
+          is: [ bearerAuth ]
           body:
             application/x-www-form-urlencoded:
               formParameters:
@@ -450,6 +454,7 @@ baseUriParameters:
             post:
               description: |
                 Updates an existing blog post.
+              is: [ bearerAuth ]
               body:
                 application/x-www-form-urlencoded:
                   formParameters:
@@ -500,6 +505,7 @@ baseUriParameters:
         post:
           description: |
             Updates the url. *authentication required*.
+          is: [ bearerAuth ]
           body:
             application/x-www-form-urlencoded:
               formParameters:
@@ -523,13 +529,14 @@ baseUriParameters:
               **400 Bad Request:** tools parameter not provided or is invalid
               **503 Service Unavailable:** an export job is already running
               **200 OK:** job submitted. Body will be: *{"status": "in progress", "filename": FILENAME}*
+            is: [ bearerAuth ]
         /export_status:
           description: |
             Check status of a bulk export job
           get:
             description: |
               Returns status: busy or ready
-
+            is: [ bearerAuth ]
         /{project}/webhooks:
             type: {
               typedCollection: {
@@ -555,6 +562,7 @@ baseUriParameters:
               post:
                 description: |
                   Create a new webhook.
+                is: [ bearerAuth ]
                 body:
                   application/x-www-form-urlencoded:
                     formParameters:
@@ -582,6 +590,7 @@ baseUriParameters:
                 post:
                   description: |
                     Update an existing webhook
+                  is: [ bearerAuth ]
                   body:
                     application/x-www-form-urlencoded:
                       formParameters:
@@ -598,6 +607,7 @@ baseUriParameters:
                           required: false
                           type: string
                 delete:
+                  is: [ bearerAuth ]
                   description: |
                     Delete an existing webhook
         /install_tool:
@@ -608,6 +618,7 @@ baseUriParameters:
             success: False if error is occurred, otherwise True
             info: success or error message
           post:
+            is: [ bearerAuth ]
             body:
               application/x-www-form-urlencoded:
                 formParameters:

http://git-wip-us.apache.org/repos/asf/allura/blob/f864c018/Allura/docs/api-rest/resourceTypes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/resourceTypes.yaml b/Allura/docs/api-rest/resourceTypes.yaml
index 7d38d3f..9a69e5a 100755
--- a/Allura/docs/api-rest/resourceTypes.yaml
+++ b/Allura/docs/api-rest/resourceTypes.yaml
@@ -8,15 +8,15 @@
     patch?:
       responses: *standardResponses
     post?:
-        responses:
-          201:
-            description: Created
+      responses:
+        201:
+          description: Created
     delete?:
       responses: *standardResponses
 - collection:
     type: base
     get:
-      is: [ pageable ]
+      is: [ pageable, bearerAuth ]
 - member:
       type: base
       get?:
@@ -27,6 +27,7 @@
 - tool:
     type: member
     get:
+      is: [ bearerAuth ]
       responses:
         200:
           body:
@@ -55,6 +56,7 @@
     delete?:
 - searchableCollection:
     get:
+      is: [ bearerAuth ]
       queryParameters:
         <<queryParamName>>:
           description: Return <<resourcePathName>> that have their <<queryParamName>> matching the given value
@@ -77,7 +79,7 @@
     description: |
       Checks if a given user has permissions.
     get:
-      is: [permissionTestable]
+      is: [permissionTestable, bearerAuth]
 - project:
     type: member
     get:

http://git-wip-us.apache.org/repos/asf/allura/blob/f864c018/Allura/docs/api-rest/securitySchemes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/securitySchemes.yaml b/Allura/docs/api-rest/securitySchemes.yaml
index c4bdd06..7516290 100755
--- a/Allura/docs/api-rest/securitySchemes.yaml
+++ b/Allura/docs/api-rest/securitySchemes.yaml
@@ -1,29 +1,22 @@
 - oauth_1_0:
     description: |
-        Apache Allura supports OAuth 1.0 for authenticating API requests.
+        OAuth 1.0 may be used to authenticate API requests.
+
+        Another option which is simpler in some ways is "bearer tokens":
+
+        A bearer token (aka access token) may be generated at https://forge-allura.apache.org/auth/oauth/ and used
+        in an HTTP header like:
+
+        `Authorization: Bearer MY_BEARER_TOKEN`
+
+          or in a URL like
+
+        `?access_token=MY_BEARER_TOKEN`
+
+        To use bearer tokens, choose "Anonymous" security and then use the Authorization header to enter your Bearer token.
     type: OAuth 1.0
     settings:
       requestTokenUri: https://forge-allura.apache.org/rest/oauth/request_token
-      authorizationUri: /rest/oauth/authorize
-      tokenCredentialsUri: /rest/oauth/access_token
+      authorizationUri: https://forge-allura.apache.org/rest/oauth/authorize
+      tokenCredentialsUri: https://forge-allura.apache.org/rest/oauth/access_token
 
-- oauth_bearer_token:
-    description: |
-        A bearer token (aka access token) may be generated at https://forge-allura.apache.org/auth/oauth/ for simple
-        authorization via URL parameter or HTTP header.
-    type: x-OAuth-Bearer-Token
-    describedBy:
-        headers:
-            Authorization:
-                description: |
-                   Used to send a bearer token.  Use either this or
-                   the "access_token" query string parameter.
-                type: string
-        queryParameters:
-            access_token:
-                description: |
-                   Used to send a bearer token.  Use either this or
-                   the "Authorization" header
-                type: string
-    settings:
-      authorizationUri: https://forge-allura.apache.org//auth/oauth/

http://git-wip-us.apache.org/repos/asf/allura/blob/f864c018/Allura/docs/api-rest/traits.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/traits.yaml b/Allura/docs/api-rest/traits.yaml
index 2b45b71..31ee122 100755
--- a/Allura/docs/api-rest/traits.yaml
+++ b/Allura/docs/api-rest/traits.yaml
@@ -54,4 +54,15 @@
         type: string
         example: heiths
         required: true
-        description: The username to check
\ No newline at end of file
+        description: The username to check
+- bearerAuth:
+    # This can also be done with ?access_token=
+    # But it's simpler in the docs / Try It interface to just show one option
+    # and using the header method keeps it separate from query params that the individual API endpoints use
+    headers:
+      Authorization:
+        description: |
+          Optional.  Authenticate yourselve with a token from https://forge-allura.apache.org/auth/oauth/
+          Use it here like: `Bearer 5d79e800a36bf602314d`
+        type: string
+        pattern: "^Bearer [0-9a-f]+$"


[04/11] allura git commit: [#6797] first round of some more changes

Posted by br...@apache.org.
[#6797] first round of some more changes

* specify which types are valid for each has_access endpoint
* add/update a few descriptions
* add a few missing get: sections
* remove _discuss endpoing which will be removed from code soon
* make user-profile stuff anchored to /u/ neighborhood
* remove old unused permission type


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/0e133c5d
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/0e133c5d
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/0e133c5d

Branch: refs/heads/db/6797
Commit: 0e133c5dd65b8a1bbf88d08d8a60f22d490b443c
Parents: 247ee2a
Author: Dave Brondsema <da...@brondsema.net>
Authored: Mon Aug 10 16:16:22 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Aug 11 12:03:51 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/api.raml           | 289 ++++++++++++++++-----------
 Allura/docs/api-rest/resourceTypes.yaml |  32 +--
 Allura/docs/api-rest/traits.yaml        |  19 +-
 3 files changed, 179 insertions(+), 161 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/0e133c5d/Allura/docs/api-rest/api.raml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/api.raml b/Allura/docs/api-rest/api.raml
index b22c117..749e321 100755
--- a/Allura/docs/api-rest/api.raml
+++ b/Allura/docs/api-rest/api.raml
@@ -17,51 +17,70 @@ baseUriParameters:
 
 /{neighborhood}:
     description: |
-      Neighborhoods are groups of logically related projects, which have the same default options. 
-      
+      Neighborhoods are groups of logically related projects, which have the same default options.
+
     uriParameters:
       neighborhood:
         example: p
         description: |
-          Allura has two default neighborhoods: **“Projects”** `/p` and **“Users”** `/u`. 
+          Allura has two default neighborhoods: **“Projects”** `/p` and **“Users”** `/u`.
           More information can be found [here](https://forge-allura.apache.org/docs/getting_started/using.html?highlight=neighborhood#what-are-neighborhoods)
-    
+
     /has_access:
       type: permission
+      get:
+        queryParameters:
+          perm:
+            displayName: Permission
+            required: true
+            type: string
+            example: create
+            default: read
+            enum: [read, admin, create, update, register]
+
 
     /{project}:
       description: |
         Get or modify existing projects.
       uriParameters:
         project:
-          description: "The Apache Allura Project."
+          description: The Project short name.
           example: "allura"
           pattern: ([a-zA-Z]+)
-    
-      type: { 
-          project: { 
+
+      type: {
+          project: {
           schema: !include schemas/project.json,
           example: !include examples/project.json
           }
         }
-            
+
       /has_access:
         type: permission
-        
+        get:
+          queryParameters:
+            perm:
+              displayName: Permission
+              required: true
+              type: string
+              example: create
+              default: read
+              enum: [read, admin, create, update]
+
         /{link}:
           description: |
             Represents the External Link tool.
-          type: { 
+          type: {
               tool: {
               example: !include examples/link.json,
               schema: !include schemas/link.json
               }
             }
-        
+
           get:
             description: |
               Returns the existing url.
-        
+
           post:
             description: |
               Updates the url. *authentication required*.
@@ -73,9 +92,9 @@ baseUriParameters:
                       The url you would like to update to.
                     type: string
                     example: http://google.com
-        
+
         /{blog}:
-          type: { 
+          type: {
               tool: {
               example: !include examples/blog.json,
               schema: !include schemas/blog.json
@@ -83,14 +102,14 @@ baseUriParameters:
             }
           description: |
             Represents the **Blog tool**
-        
+
           displayName: Blog
           uriParameters:
            blog:
              displayName: Blog Name
              type: string
              example: blog
-        
+
           get:
             description: |
               Returns a list of posts, including title and API url.
@@ -127,8 +146,9 @@ baseUriParameters:
                     enum: [draft, published]
                     type: string
                     example: published
-        
+
           /{year}/{month}/{title}:
+              description: Represents a blog post entry.
               type: {
                 tool: {
                 example: !include examples/blogPost.json,
@@ -149,7 +169,7 @@ baseUriParameters:
                  displayName: Title
                  type: string
                  example: project-insights
-        
+
               post:
                 description: |
                   Updates an existing blog post.
@@ -173,10 +193,19 @@ baseUriParameters:
                           Draft or published.
                         enum: [draft, published]
                         type: string
-        
+
           /has_access:
             type: permission
-        
+            get:
+              queryParameters:
+                perm:
+                  displayName: Permission
+                  required: true
+                  type: string
+                  example: post
+                  default: read
+                  enum: [admin, configure, moderate, post, unmoderated_post, read, write]
+
         /{forum}:
           description: |
             A list of forums
@@ -186,7 +215,7 @@ baseUriParameters:
               schema: !include schemas/page.json
               }
             }
-        
+
           displayName: forum
           uriParameters:
            forum:
@@ -195,19 +224,30 @@ baseUriParameters:
              example: general
              description: |
                Returns a list of forums, including name, description, num_posts, API URL, and last_post details
-        
+
                To view more than 100 threads, or 100 posts in a thread, use the pagination support of the API by adding ?page=1 etc. to the URL.
-        
+
           /forum:
             description: |
               returns a limited list of topics in the forum, with fields for subject, num_replies, API URL, and last_post
+            get:
             /{slug}:
               description: |
                 returns a limited list of posts in the thread, with fields for author, text, and timestamp. Nested posts (i.e. a reply to a post) can be determined by the slug structure. For example, "slug": "0a0b/9f00" is a reply to the post with "slug": "0a0b"
-        
+              get:
+
           /has_access:
             type: permission
-        
+            get:
+              queryParameters:
+                perm:
+                  displayName: Permission
+                  required: true
+                  type: string
+                  example: post
+                  default: read
+                  enum: [admin, configure, moderate, post, unmoderated_post, read]
+
         /{discussion}:
           description: |
             Represents the **Discussion Tool**.
@@ -215,17 +255,17 @@ baseUriParameters:
               tool: {
               schema: !include schemas/discussion.json,
               example: !include examples/discussion.json
-        
+
               }
             }
-        
+
           displayName: Discussion
           uriParameters:
            discussion:
              displayName: Discussion Name
              type: string
              example: "discussion"
-        
+
           /{forum}:
             type: {
                 tool: {
@@ -233,17 +273,17 @@ baseUriParameters:
                   schema: !include schemas/page.json
                 }
               }
-        
+
             displayName: forum
             uriParameters:
              forum:
                displayName: Forum Name
                type: string
                example: general
-        
+
           /has_access:
             type: permission
-        
+
         /{wiki}:
           description: |
             Represents the **Wiki Tool**.
@@ -253,15 +293,15 @@ baseUriParameters:
               schema: !include schemas/wiki.json
               }
             }
-        
+
           displayName: Wiki
           uriParameters:
            wiki:
              displayName: Wiki Name
              type: string
              example: wiki
-        
-        
+
+
           /{title}:
             type: {
                 tool: {
@@ -269,7 +309,7 @@ baseUriParameters:
                 schema: !include schemas/page.json
                 }
               }
-        
+
             displayName: Title
             uriParameters:
              title:
@@ -293,11 +333,20 @@ baseUriParameters:
                       description: |
                        Comma-separated list of page labels.
                       type: string
-        
-        
+
+
           /has_access:
             type: permission
-        
+            get:
+              queryParameters:
+                perm:
+                  displayName: Permission
+                  required: true
+                  type: string
+                  example: post
+                  default: read
+                  enum: [admin, configure, moderate, post, unmoderated_post, read, create, delete, edit]
+
         /{tracker}:
           description: |
             Represents the **Ticket Tracker Tool**.
@@ -308,70 +357,65 @@ baseUriParameters:
               }
             }
           is: [pageable]
-        
+
           displayName: Tracker Url
           uriParameters:
            tracker:
              displayName: Tracker Name
              type: string
              example: tickets
-        
+
           get:
             is: [pageable]
             description: |
               Get a list of tickets
-        
-          /_discuss:
-            description: |
-              returns summary information about the tool discussion, including the threads in the discussion (there is one thread per ticket)
+
+          /_discuss/thread/{threadId}:
+            uriParameters:
+             threadId:
+               displayName: Thread ID
+               type: string
+               example: f78b98a0
+
             get:
-        
-            /thread/{threadId}:
+              description: |
+                returns summary information about a thread, including the posts in a thread
+            /{slug}:
               uriParameters:
-               threadId:
-                 displayName: Thread ID
+               slug:
+                 displayName: Slug
                  type: string
-                 example: f78b98a0
-        
+                 example: 9133
               get:
                 description: |
-                  returns summary information about a thread, including the posts in a thread
-              /{slug}:
-                uriParameters:
-                 slug:
-                   displayName: Slug
-                   type: string
-                   example: 9133
-                get:
-                  description: |
-                    returns detailed information about a post
-                /reply:
-                  description: |
-                    create a threaded reply to the given post
-                  post:
-                    body:
-                      application/x-www-form-urlencoded:
-                        formParameters:
-                          text:
-                            description: the text of the reply
-                            example: |
-                              I *agree* with you.
-                            required: true
-                            type: string
-              /new:
+                  returns detailed information about a post
+              /reply:
                 description: |
-                  create a post in the given thread
+                  create a threaded reply to the given post
                 post:
                   body:
                     application/x-www-form-urlencoded:
                       formParameters:
                         text:
-                          description: The text of the new post
+                          description: the text of the reply
                           example: |
-                            This is a new post!
+                            I *agree* with you.
                           required: true
                           type: string
-        
+            /new:
+              description: |
+                create a post in the given thread
+              post:
+                body:
+                  application/x-www-form-urlencoded:
+                    formParameters:
+                      text:
+                        description: The text of the new post
+                        example: |
+                          This is a new post!
+                        required: true
+                        type: string
+
           /search:
             type: {
               searchableCollection: {
@@ -381,12 +425,13 @@ baseUriParameters:
               }
             }
             is: [ pageable]
-        
+
           /new:
             description: |
               Creates a new ticket.
             post:
               body:
+                # FIXME?
                 application/x-www-form-urlencoded:
                   formParameters:
                     access_token:
@@ -417,13 +462,13 @@ baseUriParameters:
                       description:  custom field value
                       type: string
                       required: false
-        
+
           /{ticketNumber}:
             type: {
               tool: {
               example: !include examples/ticket.json,
               schema: !include schemas/ticket.json
-        
+
               }
             }
             displayName: Ticket Number
@@ -432,14 +477,15 @@ baseUriParameters:
                 example: 1
                 description: |
                   Get a details of a ticket.
-        
+
             /save:
               description: |
                 updates an existing ticket
                 parameters are the same as /rest/p/project_name/mount_point/new
-        
+
               post:
                 body:
+                  # form?
                   application/x-www-form-urlencoded:
                     formParameters:
                       access_token:
@@ -470,22 +516,31 @@ baseUriParameters:
                         description:  custom field value
                         type: string
                         required: false
-        
+
           /has_access:
             type: permission
-        
-        
+            get:
+              queryParameters:
+                perm:
+                  displayName: Permission
+                  required: true
+                  type: string
+                  example: post
+                  default: read
+                  enum: [admin, configure, moderate, post, unmoderated_post, read, create, delete, update, save_searches]
+
+
         /admin:
           description: |
             Endpoints for **project exporting** and managing **webhooks**
-        
+
           /export:
             description: |
               Generates a full bulk export of your tool(s) in the same format as the API for individual access. Authentication required. Here is an [example shell](https://forge-allura.apache.org/p/allura/git/ci/master/tree/scripts/project_export) script using these APIs, suitable to run as a cron job.
             post:
               description: |
                 Submits an export job
-        
+
                 **400 Bad Request:** tools parameter not provided or is invalid
                 **503 Service Unavailable:** an export job is already running
                 **200 OK:** job submitted. Body will be: *{"status": "in progress", "filename": FILENAME}*
@@ -495,7 +550,7 @@ baseUriParameters:
             get:
               description: |
                 Returns status: busy or ready
-        
+
           /{project}/webhooks:
               type: {
                 typedCollection: {
@@ -506,10 +561,10 @@ baseUriParameters:
               is: [secured]
               description: |
                 This is to manage webhooks programatically. See the [Webhook docs](https://forge-allura.apache.org/p/allura/wiki/Webhooks/) for more information.
-        
+
                 The webhook payloads and signature verification method are documented at https://forge-allura.apache.org/p/allura/wiki/Webhooks/
-        
-        
+
+
               /{type}:
                 uriParameters:
                   type:
@@ -534,7 +589,7 @@ baseUriParameters:
                       type: string
                       description: |
                         Unique identifier for a webhook.
-        
+
                   get:
                     description: |
                       View a webhook
@@ -552,7 +607,7 @@ baseUriParameters:
                           secret:
                             description: |
                               Optionally supply your own secret.
-        
+
                               Note: DO NOT ever expose your secret!
                             required: false
                             type: string
@@ -562,7 +617,7 @@ baseUriParameters:
           /install_tool:
             description: |
               Adds a new tool to the project. *Authentication Required*.
-        
+
               returns dict with two fields:
               success: False if error is occurred, otherwise True
               info: success or error message
@@ -594,24 +649,24 @@ baseUriParameters:
                       required: false
                       description: |
                         "first", "last", or "alpha_tool" for position with respect to existing tools (or existing tools of the same type for "alpha_tool")
-        
-        /{username}:
-            description: |
-              Represents a user (returns a project-like response).
-              
-              Most often you'll use the /profile suffix to return user data.
-            type: {
-              tool:{
-                example: !include examples/user.json,
-                schema: !include schemas/user.json
-              }
-            }
-            /profile:
-              description: |
-                A user profile
-              type: {
-                tool:{
-                example: !include examples/userProfile.json,
-                schema: !include schemas/userProfile.json
-                }
-              }
\ No newline at end of file
+
+/u/{username}:
+    description: |
+      Represents a user (returns a project-like response).
+
+      Most often you'll use the /profile suffix to return user data.
+    type: {
+      tool:{
+        example: !include examples/user.json,
+        schema: !include schemas/user.json
+      }
+    }
+    /profile:
+      description: |
+        A user profile
+      type: {
+        tool:{
+        example: !include examples/userProfile.json,
+        schema: !include schemas/userProfile.json
+        }
+      }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/0e133c5d/Allura/docs/api-rest/resourceTypes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/resourceTypes.yaml b/Allura/docs/api-rest/resourceTypes.yaml
index 10dcb53..1f7b9f8 100755
--- a/Allura/docs/api-rest/resourceTypes.yaml
+++ b/Allura/docs/api-rest/resourceTypes.yaml
@@ -64,36 +64,7 @@
           body:
             application/json:
               schema: <<schema>>
-    delete?:   
-- permissionCheck:
-    description: |
-      This is API to run permission checks. 
-      It is available on a neighborhood, project and tool level.
-      
-      This is only available to users that have 'admin' permission for corresponding neighborhood/project/tool. 
-      It requires user and perm parameters and will return JSON dict with result key, which contains boolean value, 
-      indicating if given user has perm permission to the neighborhood/project/tool.
-    get:
-      queryParameters:
-        user:
-          type: string
-          example: heiths
-          required: true
-          description: The username to check
-        perm:
-          displayName: Permission
-          required: true
-          type: string
-          example: create
-          default: read
-          enum: ["read", "admin", "create", "update"]
-      description: |
-        Get permissions for <<resourcePathName>>.
-      responses:
-        200:
-          body:
-            application/json:
-              schema: <<schemaItem>>
+    delete?:
 - searchableCollection:
     get:
       queryParameters:
@@ -147,4 +118,3 @@
             application/json:
               schema: <<schema>>
 
-    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/0e133c5d/Allura/docs/api-rest/traits.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/traits.yaml b/Allura/docs/api-rest/traits.yaml
index d483810..c1f47c5 100755
--- a/Allura/docs/api-rest/traits.yaml
+++ b/Allura/docs/api-rest/traits.yaml
@@ -50,15 +50,15 @@
 - permissionTestable:
     description: |
       **Endpoints**
-      Permissions can be checked at three levels: 
+      Permissions can be checked at three levels:
       1. **Neighborhood:** `/rest/p/has_access`
       2. **Project:** `/rest/p/project_name/has_access`
       3. **Tool:** `/rest/p/project_name/mount_point/has_access`
-      
-      --- 
-      
+
+      ---
+
       It is only available to users that have 'admin' permission for corresponding neighborhood/project/tool. It requires user and perm parameters and will return JSON dict with result key, which contains boolean value, indicating if given user has perm permission to the neighborhood/project/tool.
-      
+
       E.g.:
       **GET** `/rest/p/test/wiki/has_access?user=admin1&perm=create`
       *returns* { result: true }
@@ -70,11 +70,4 @@
         type: string
         example: heiths
         required: true
-        description: The username to check
-      perm:
-        displayName: Permission
-        required: true
-        type: string
-        example: create
-        default: read
-        enum: ["read", "admin", "create", "update"]
\ No newline at end of file
+        description: The username to check
\ No newline at end of file


[09/11] allura git commit: [#6797] remove unused traits. Change examples in 'pageable' since it was starting on page 2 isn't very helpful :)

Posted by br...@apache.org.
[#6797] remove unused traits.  Change examples in 'pageable' since it was starting on page 2 isn't very helpful :)


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/7b4eb92b
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/7b4eb92b
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/7b4eb92b

Branch: refs/heads/db/6797
Commit: 7b4eb92b19fe22257b2bd301df9c3c5bbe4766f4
Parents: 8eac69c
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Aug 13 14:40:13 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Thu Aug 13 14:40:13 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/traits.yaml | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/7b4eb92b/Allura/docs/api-rest/traits.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/traits.yaml b/Allura/docs/api-rest/traits.yaml
index 40b39e3..2b45b71 100755
--- a/Allura/docs/api-rest/traits.yaml
+++ b/Allura/docs/api-rest/traits.yaml
@@ -20,25 +20,17 @@
 - pageable:
     queryParameters:
       page:
-        description: Skip over a number of elements by specifying an offset value for the query
+        description: Skip over a number of elements by specifying a starting page
         type: integer
         required: false
-        example: 2
+        example: 0
         default: 0
       limit:
-        description: Limit the number of elements on the response
+        description: Limit the number of elements on the response "page"
         type: integer
         required: false
-        example: 5
+        example: 10
         default: 10
-- paged:
-    queryParameters:
-      numPages:
-        description: The number of pages to return
-- rateLimited:
-    queryParameters:
-      numPages:
-        description: The number of pages to return, not to exceed <<maxPages>>
 - permissionTestable:
     description: |
       **Endpoints**


[08/11] allura git commit: [#6797] remove unused baseTool type. Webhooks collection (only one) doesn't let you POST at the collection level

Posted by br...@apache.org.
[#6797] remove unused baseTool type.  Webhooks collection (only one) doesn't let you POST at the collection level


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/8eac69c1
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/8eac69c1
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/8eac69c1

Branch: refs/heads/db/6797
Commit: 8eac69c1bd5684cc64ffe8ef0f06fc24d6cfcd28
Parents: ecd0e4a
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Aug 13 14:29:54 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Thu Aug 13 14:29:54 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/api.raml           |  6 +++---
 Allura/docs/api-rest/resourceTypes.yaml | 22 +---------------------
 2 files changed, 4 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/8eac69c1/Allura/docs/api-rest/api.raml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/api.raml b/Allura/docs/api-rest/api.raml
index dfedf35..2d9b211 100755
--- a/Allura/docs/api-rest/api.raml
+++ b/Allura/docs/api-rest/api.raml
@@ -216,7 +216,6 @@ baseUriParameters:
             Creates a new ticket.
           post:
             body:
-              # FIXME?
               application/x-www-form-urlencoded:
                 formParameters:
                   access_token:
@@ -269,7 +268,6 @@ baseUriParameters:
 
             post:
               body:
-                # form?
                 application/x-www-form-urlencoded:
                   formParameters:
                     access_token:
@@ -543,7 +541,9 @@ baseUriParameters:
               This is to manage webhooks programatically. See the [Webhook docs](https://forge-allura.apache.org/p/allura/wiki/Webhooks/) for more information.
 
               The webhook payloads and signature verification method are documented at https://forge-allura.apache.org/p/allura/wiki/Webhooks/
-
+            get:
+              description: |
+                Returns the list of webhooks
 
             /{type}:
               uriParameters:

http://git-wip-us.apache.org/repos/asf/allura/blob/8eac69c1/Allura/docs/api-rest/resourceTypes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/resourceTypes.yaml b/Allura/docs/api-rest/resourceTypes.yaml
index 4bb176f..4218464 100755
--- a/Allura/docs/api-rest/resourceTypes.yaml
+++ b/Allura/docs/api-rest/resourceTypes.yaml
@@ -1,6 +1,6 @@
 - base:
     get?:
-      responses: &standardResponses
+      responses: &standardResponses  # yaml syntax to alias properties
         200:
           description: OK
     put?:
@@ -13,22 +13,10 @@
             description: Created
     delete?:
       responses: *standardResponses
-- baseTool:
-    get?:
-      responses:
-        200:
-          description: OK
-    post?:
-        responses:
-          201:
-            description: Created
-    delete?:
-      responses: *standardResponses
 - collection:
     type: base
     get:
       is: [ pageable ]
-    post:
 - member:
       type: base
       get?:
@@ -85,14 +73,6 @@
             application/json:
               schema: <<schema>>
               example: <<example>>
-    post:
-      body:
-        application/json:
-      responses:
-        201:
-          body:
-            application/json:
-              schema: <<schema>>
 - permission:
     description: |
       Checks if a given user has permissions.


[03/11] allura git commit: [#6797] apply security globally; put bearer token option in even though it doesn't do much; remove trait (although it might be a good option to bring back)

Posted by br...@apache.org.
[#6797] apply security globally; put bearer token option in even though it doesn't do much; remove trait (although it might be a good option to bring back)


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/56601401
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/56601401
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/56601401

Branch: refs/heads/db/6797
Commit: 56601401638a181d13ad78376254695d29f94f97
Parents: 0e133c5
Author: Dave Brondsema <da...@brondsema.net>
Authored: Mon Aug 10 17:40:06 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Aug 11 12:03:51 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/api.raml             |  3 ++-
 Allura/docs/api-rest/resourceTypes.yaml   |  1 -
 Allura/docs/api-rest/securitySchemes.yaml | 25 +++++++++++++++++++++++--
 Allura/docs/api-rest/traits.yaml          |  8 --------
 4 files changed, 25 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/56601401/Allura/docs/api-rest/api.raml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/api.raml b/Allura/docs/api-rest/api.raml
index 749e321..6f040e7 100755
--- a/Allura/docs/api-rest/api.raml
+++ b/Allura/docs/api-rest/api.raml
@@ -3,6 +3,7 @@
 title: Apache Allura
 version: 1
 baseUri: https://{domain}/rest
+securedBy: [null, oauth_1_0, oauth_bearer_token]
 
 resourceTypes: !include resourceTypes.yaml
 traits: !include traits.yaml
@@ -15,6 +16,7 @@ baseUriParameters:
     default: "forge-allura.apache.org"
 
 
+
 /{neighborhood}:
     description: |
       Neighborhoods are groups of logically related projects, which have the same default options.
@@ -558,7 +560,6 @@ baseUriParameters:
                 schema: !include schemas/webhook.json
                 }
               }
-              is: [secured]
               description: |
                 This is to manage webhooks programatically. See the [Webhook docs](https://forge-allura.apache.org/p/allura/wiki/Webhooks/) for more information.
 

http://git-wip-us.apache.org/repos/asf/allura/blob/56601401/Allura/docs/api-rest/resourceTypes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/resourceTypes.yaml b/Allura/docs/api-rest/resourceTypes.yaml
index 1f7b9f8..4bb176f 100755
--- a/Allura/docs/api-rest/resourceTypes.yaml
+++ b/Allura/docs/api-rest/resourceTypes.yaml
@@ -94,7 +94,6 @@
             application/json:
               schema: <<schema>>
 - permission:
-    securedBy: [null, oauth_1_0]
     description: |
       Checks if a given user has permissions.
     get:

http://git-wip-us.apache.org/repos/asf/allura/blob/56601401/Allura/docs/api-rest/securitySchemes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/securitySchemes.yaml b/Allura/docs/api-rest/securitySchemes.yaml
index a7927cc..c4bdd06 100755
--- a/Allura/docs/api-rest/securitySchemes.yaml
+++ b/Allura/docs/api-rest/securitySchemes.yaml
@@ -4,5 +4,26 @@
     type: OAuth 1.0
     settings:
       requestTokenUri: https://forge-allura.apache.org/rest/oauth/request_token
-      authorizationUri: https://forge-allura.apache.org/rest/oauth/authorize
-      tokenCredentialsUri: https://forge-allura.apache.org/rest/oauth/access_token
\ No newline at end of file
+      authorizationUri: /rest/oauth/authorize
+      tokenCredentialsUri: /rest/oauth/access_token
+
+- oauth_bearer_token:
+    description: |
+        A bearer token (aka access token) may be generated at https://forge-allura.apache.org/auth/oauth/ for simple
+        authorization via URL parameter or HTTP header.
+    type: x-OAuth-Bearer-Token
+    describedBy:
+        headers:
+            Authorization:
+                description: |
+                   Used to send a bearer token.  Use either this or
+                   the "access_token" query string parameter.
+                type: string
+        queryParameters:
+            access_token:
+                description: |
+                   Used to send a bearer token.  Use either this or
+                   the "Authorization" header
+                type: string
+    settings:
+      authorizationUri: https://forge-allura.apache.org//auth/oauth/

http://git-wip-us.apache.org/repos/asf/allura/blob/56601401/Allura/docs/api-rest/traits.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/traits.yaml b/Allura/docs/api-rest/traits.yaml
index c1f47c5..40b39e3 100755
--- a/Allura/docs/api-rest/traits.yaml
+++ b/Allura/docs/api-rest/traits.yaml
@@ -35,14 +35,6 @@
     queryParameters:
       numPages:
         description: The number of pages to return
-- secured:
-    displayName: secured
-    headers:
-      Authorization:
-        description: The auth token for this request
-    responses:
-      401:
-        description: Unauthorized
 - rateLimited:
     queryParameters:
       numPages:


[10/11] allura git commit: [#6797] no PUT to project

Posted by br...@apache.org.
[#6797] no PUT to project


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/56d8d389
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/56d8d389
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/56d8d389

Branch: refs/heads/db/6797
Commit: 56d8d3892d4b1a021b2c24cd81c2f30fa35832e1
Parents: 7b4eb92
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Aug 13 16:00:14 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Thu Aug 13 16:00:14 2015 -0400

----------------------------------------------------------------------
 Allura/docs/api-rest/resourceTypes.yaml | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/56d8d389/Allura/docs/api-rest/resourceTypes.yaml
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/resourceTypes.yaml b/Allura/docs/api-rest/resourceTypes.yaml
index 4218464..7d38d3f 100755
--- a/Allura/docs/api-rest/resourceTypes.yaml
+++ b/Allura/docs/api-rest/resourceTypes.yaml
@@ -87,13 +87,5 @@
             application/json:
               schema: <<schema>>
               example: <<example>>
-    put:
-      body:
-        application/json:
-          schema: <<schema>>
-      responses:
-        200:
-          body:
-            application/json:
-              schema: <<schema>>
+