API Documentation
All API calls return JSON or XML.

Get a project presentation

GET /v1/projects/{project_guid}

Alternate project request:

GET /v1/projects/{project_permalink} with parameter 'by_permalink=true'

Parameters

  • photo_size (default = size_g)
  • thumbnail_size (default = thumbnail_d)

Photo Size options:

  • thumbnail_d 300 by 300
  • size_g 300 wide
  • size_q 1600 wide

Sample JSON response

/v1/projects/6UCfX77EijB9.json?api_key=yaxfnLpEDlSwyaxfnLpEDlSw

or

/v1/projects/action-packaging.json?by_permalink=true&api_key=yaxfnLpEDlSwyaxfnLpEDlSw

        
[
  {
    id: 1234,
    guid: "hnZvHJn2bR6t",
    title: "Action Packaging",
    subtitle: "2016 Renovation",
    address_format_1: "Grand Rapids, Michigan",
    address_format_2: "3950 Fake Dr, Grand Rapids, Michigan",
    address_format_3: "3950 Fake Dr, Grand Rapids, Michigan US",
    postal_code: "49503",
    country: "France",
    permalink: "action-packaging",
    kind_list: ["Industrial"],
    tile_size: "small", // can be 'small', 'large' or null. Meant to convey project's relative size.
    selected_facts: [
      {
        selected_fact: {
          fact: "title",
          value: "Action Packaging"
        }
      },
      {
        selected_fact: {
          fact: "subtitle",
          value: null
        }
      },
      {
        selected_fact: {
          fact: "postal_code",
          value: "49316"
        }
      },
      {
        selected_fact: {
          fact: "size",
          value: "109,000 SF"
        }
      }
    ]
    all_custom_fields: [
      ["Keys", "six"],
      ["WebId", null],
      ["Presentation Style", 99]
    ]
    displaying_description_with_html: Big long description here.,
    displaying_description_without_html: "Big long description here",
    photos: [
      {
        photo: {
          filename: "100_0322.jpg",
          type: null,
          caption: "Johnson Photography",
          caption_href: "http://google.com",
          source: "//presenter-development.s3.amazonaws.com/photos/2/size_g/2.jpg"
          source_thumb: "//presenter-development.s3.amazonaws.com/photos/2/thumbnail_d/2.jpg"
        }
      },
      {
        photo: {
          filename: "100_0326.jpg",
          type: null,
          caption: "",
          caption_href: "",
          source: "//presenter-development.s3.amazonaws.com/photos/6/size_g/6.jpg"
          source_thumb: "//presenter-development.s3.amazonaws.com/photos/6/thumbnail_d/6.jpg"
        }
      }
    ],
    displaying_contributions: [
      {
        displaying_contribution: {
          contribution: {
            role: "Did a whole bunch a stuff",
            size: "medium",
            my_role_list: ["hammered"],
            contributor: {
              contributor_type: "individual",
              identity: "Sadel Sider",
              locality: "Grandville",
              region: "MI",
              street: null,
              street2: null,
              postal_code: "49418",
              country: "US",
              url: "http://www.projectpresenter.com/sadel-sider"
          }
        }
      }
    },
    {
      displaying_contribution: {
        contribution": {
          role: "asdff",
          size: "medium",
          my_role_list: ["asdff"],
          contributor: {
            contributor_type: "individual",
            identity: "Randy Sider",
            locality: "Grandville",
            region: "MI",
            street: null,
            street2: null,
            postal_code: "49418",
            country: "US",
            url: "http://www.projectpresenter.com/randy-sider"
          }
        }
      }
    }
  ],
  displaying_award_entries: [
  {
    displaying_award_entry: {
      award_entry: {
        award_category: {
          permalink: "green-award",
          name: "Green Award",
          award_event: {
            permalink: "2015-aia-awards",
            handout_at: "2015-11-14T05:00:00Z",
            title: "2015 AIA Awards",
            awarder: "AIA of Michigan"
          }
        }
      }
    }
  }
],
  displaying_accolades: [
    displaying_accolade: {
      accolade: {
        statement: "We were amazed at the craftsmanship",
        statement_maker: "John Bobersmith, Kobobo Contractors, Inc."
      }
    }
  ]
  project_groups: [ // the project groups that this presentation is in
    {
      "project_group": {
        "id": 4,
        "title": "Industrial",
        "permalink": "industrial",
        "description": null
      }
    }
  ]
}
        
      

Get a list of project presentations

GET /v1/projects

Parameters

  • per_page (default = 20)
  • page (page number, default = 1)
  • group (default = 'all', use permalink ex: 'green-churches' for group "Green Churches")
  • with_kind_tag // returns projects matching any Project Type Tags (kind_tags) that are passed. Separate multiple tags by a pipe "|"
  • not_with_kind_tag // returns projects that do not have these Project Type Tags. Separate multiple tags by a pipe "|" (Do not use with 'with_kind_tags')
  • photo_size (default = size_g)
  • updated_within (presentations that have been updated with the last X days)
  • created_within (presentations that have been created with the last X days)

The order of the presentation are controlled by the user by dragging and dropping the projects in the desired order. If you pass updated_within or created_within the project will be in date order.

Sample JSON response

/v1/projects.json?api_key=yaxfnLpEDlSwyaxfnLpEDlSw&group=school&with_kind_tag=new|recent

        
[
  Same data as a single project listed above.
],
_links: {
  first: {
    href: "/v1/projects?page=1"
  },
  previous: null,
  self: {
    href: "/v1/projects?page=1"
  },
  next: [
    {
      href: "/v1/projects?page=2"
    },
    {
      href: "/v1/projects?page=3"
    }
  ],
  last: {
    href: "/v1/projects?page=4"
  }
}

        
      

Search: Get a list of projects based on search query

GET /v1/projects/search

Parameters

  • per_page (default = 20)
  • page (page number, default = 1)
  • photo_size (default = size_g)
  • --query parameters--
  • q[project_group]
  • q[budget]
  • q[budget_gte] (greater than or equal too)
  • q[budget_lte] (less than or equal too)
  • q[size]
  • q[size_gte]
  • q[size_lte]
  • q[cf_#{field_name_underscored_and_downcased}] (For custom fields, ex: custom field "Large Bedrooms", would be "cf_large_bedrooms")
  • q[near] (the more detail the better "123 fake street Grand Rapids MI 49503"
  • q[near_mi] (miles radius from 'near', ex: "30")

Sample JSON response

/v1/projects/search.json?api_key=yaxfnLpEDlSwyaxfnLpEDlSw&q[size_gte]=120&q[cf_lemmon]=66&q[near]=49503&q[near_mi]=20&q[project_group]=windy_ridge

        
[
  Same data as a single project listed above.
],
_links: {
  first: {
    href: "/v1/projects/search?page=1"
  },
  previous: null,
  self: {
    href: "/v1/projects/search?page=1"
  },
  next: [
    {
      href: "/v1/projects/search?page=2"
    },
    {
      href: "/v1/projects/search?page=3"
    }
  ],
  last: {
    href: "/v1/projects/search?page=4"
  }
}

        
      

Get an employee's project presentations

GET /v1/projects/employee

Parameters

  • employee contributor permalink ex: john-smith-jr
  • updated_within (presentations that have been updated with the last X days)
  • created_within (presentations that have been created with the last X days)

Sample JSON response

/v1/projects/employee.json?api_key=yaxfnLpEDlSwyaxfnLpEDlSw&employee=john-smith-jr

        
[
  Same data as a single project listed above.
],
  {
    employee: {name: "John Smith Jr."}
  }

        
      

Get all project groups

GET /v1/project_groups

Parameters

  • containing_projects // pass 'true' if you only want the groups that have projects in them, otherwise it will simply get all groups

Sample JSON response

/v1/project_groups.json?api_key=yaxfnLpEDlSwyaxfnLpEDlSw

        
[
  {
    id: 52,
    title: "Education",
    permalink: "education, // unique string within the portfolio to identify the group
    description: "This is the description of the group.", // user created description of the group
  }
  {
    id: 523,
    title: "Food Processing Facilities",
    permalink: "food-processing-facilities,
    description: null, // returns null if no description was written
  }
]
        
      

Update a presentation's custom field value

POST /v1/projects/{project_guid}/update_custom_field.json

Parameters

  • api_key (required)
  • id (required, project_guid)
  • custom_field_name (required, Case Sensitive)
  • custom_field_value (required)

Example

curl https://www.projectpresenter.com/v1/projects/gPICytQ39ep1/update_custom_field \ -d "api_key=KUjKncUoCyaB_9tvxHdPcA==&id=gPICytQ39ep1&custom_field_name=Some Name&custom_field_value=some value"

Get all uniq values for a field

GET /v1/projects/values_for_field

Parameters

  • api_key (required)
  • field_name (required, one of ["address_format_1", "postal_code", "phase", "completion_date_format_1", "green", "delivery_method", "budget", "size", "title", "subtitle", "client", "address_format_2", "address_format_3", "street", "street2", "locality", "region", "postal_code"] or a custom field title)
  • custom (boolean)

Sample JSON response

/v1/projects/values_for_field.json?api_key=yaxfnLpEDlSwyaxfnLpEDlSw&field_name=Sales%20Price&custom=true

        
          ["$111,900","$345,900","$40,000"]