Mock Person API (Certificates)
Certificate-authentication variant of the Mock Person API — 39 operations over 23 paths, published for testing the mTLS/certificate access path documented on the portal.
Certificate-authentication variant of the Mock Person API — 39 operations over 23 paths, published for testing the mTLS/certificate access path documented on the portal.
---
openapi: "3.0.2"
info:
title: "Mock Person API"
version: "1.0.0"
contact:
name: "DoIT Enterprise Integration API Team"
email: "api@doit.wisc.edu"
url: "https://go.wisc.edu/k701y6"
description: "A mock implementation of the Person API. This mock API returns data\
\ in the same structure as the real API, with the same features, but with fake\
\ data. The API is implemented using [JSON:API](https://jsonapi.org/) and supports\
\ the ISO/IEC 8859 character set. A quota of 30 requests per minute is enforced.\
\ The mock Person API can be used to evaluate fit of the real Person API, or to\
\ start integrating with the Person API while waiting to get access. There is\
\ no need to request access after creating an application and subscribing to the\
\ mock Person API, approval is instantaneous. The structure of the mock Person\
\ API is subject to change and it is not meant for production use. Please contact\
\ the API Team with questions or feedback: [api@doit.wisc.edu](mailto:api@doit.wisc.edu).\
\ More information on the [non-mock Person API can be found here](../../person-api/1/overview)."
servers:
- url: "https://mock.api.wisc.edu"
security:
- OAuth2ClientCredentials: []
externalDocs:
description: "Read more about JSON:API here"
url: "https://jsonapi.org/"
paths:
/people:
get:
description: "Get a collection of people. The attributes `dateOfBirth`, `deceased`,\
\ and `legalSex` will only show up if you have the 'Sensitive Person Demographics'\
\ permission."
summary: "Get people."
operationId: "get_people"
tags:
- "people"
parameters:
- name: "filter"
in: "query"
description: "Filter results of query using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
\ Refer to the [Person API Documentation](/person-api/filter-query-parameter)\
\ for more information about the `filter` query param."
required: false
style: "deepObject"
explode: true
schema:
type: "object"
additionalProperties: false
properties:
attribute:
type: "string"
example: "firstName"
- name: "fields"
in: "query"
description: "Specify the list of fields you would like to return for each\
\ resource type. For example, `fields[people]=firstName,lastName` will\
\ just return the names for people. If you are including related resources\
\ with 'includes' you can also specify fields on those resources as well.\
\ For example, `includes=jobs&fields[people]=jobs&fields[jobs]=title` will\
\ just return titles for jobs. See [Sparse Fieldsets](https://jsonapi.org/format/#fetching-sparse-fieldsets)\
\ for more details."
required: false
style: "deepObject"
explode: true
schema:
type: "object"
additionalProperties: false
properties:
type:
type: "string"
example: "people"
- name: "include"
in: "query"
description: "[include related resources](https://jsonapi.org/format/#fetching-includes).\
\ The resources to include need to be direct relationships. Nested relationships\
\ are not supported. For example, `include=jobs,identifiers` is supported\
\ but `include=person.jobs` is not supported."
schema:
type: "string"
- name: "page"
in: "query"
description: "Define options for pagination of responses. For example, `page[size]=5&page[after]=400&page[before]=800`\
\ will return a response with data about 5 people whose `id` value falls\
\ after `400` but before `800`. So `page[size]` determines the number of\
\ people resources in a response, `page[after]` is the ID of the person\
\ at the end of the previous page, `page[before]` is the ID of the person\
\ at the start of the next page. Offset pagination is also supported using\
\ `page[number]` parameter (example: `page[number]=4&page[size]=10`), but\
\ it is disabled by default. The `page[number]` determines the page to display.\
\ Offset pagination has significantly worse performance than cursor pagination,\
\ so it should only be used by applications that can't support cursor pagination.\
\ Contact the developers if you would like to enable it."
required: false
style: "deepObject"
explode: true
schema:
type: "object"
properties:
size:
type: "integer"
example: 50
maximum: 1000
minimum: 1
default: 100
description: "Size of page for paginated results."
after:
type: "string"
description: "An ephemeral identifier used only in the Person API to\
\ adhere to the [JSON:API specification](https://jsonapi.org/format/#document-resource-object-identification).\
\ This ID may change if a person is split into two people or two people\
\ are merged into one person. This ID is used for paginating results\
\ or following other links returned in the API response. This ID should\
\ not be stored in a consuming system. Concatenating parts of the\
\ URL to form a link is discouraged. Instead, use the fully-formed\
\ links returned in an API response."
example: "12345"
before:
type: "string"
description: "An ephemeral identifier used only in the Person API to\
\ adhere to the [JSON:API specification](https://jsonapi.org/format/#document-resource-object-identification).\
\ This ID may change if a person is split into two people or two people\
\ are merged into one person. This ID is used for paginating results\
\ or following other links returned in the API response. This ID should\
\ not be stored in a consuming system. Concatenating parts of the\
\ URL to form a link is discouraged. Instead, use the fully-formed\
\ links returned in an API response."
example: "12345"
number:
type: "integer"
example: 1
minimum: 1
description: "Page number for paginated results. This parameter is disabled\
\ by default. Contact the developers if you would like to enable it."
responses:
"200":
description: "A collection of people"
content:
application/vnd.api+json:
schema:
type: "object"
required:
- "data"
- "links"
properties:
data:
description: "A collection of people"
type: "array"
items:
description: "A person."
type: "object"
required:
- "type"
- "id"
- "attributes"
- "relationships"
- "links"
- "meta"
properties:
type:
type: "string"
example: "people"
id:
type: "string"
description: "An ephemeral identifier used only in the Person\
\ API to adhere to the [JSON:API specification](https://jsonapi.org/format/#document-resource-object-identification).\
\ This ID may change if a person is split into two people\
\ or two people are merged into one person. This ID is\
\ used for paginating results or following other links\
\ returned in the API response. This ID should not be\
\ stored in a consuming system. Concatenating parts of\
\ the URL to form a link is discouraged. Instead, use\
\ the fully-formed links returned in an API response."
example: "12345"
attributes:
type: "object"
required:
- "firstName"
- "lastName"
- "emailAddress"
- "officeAddress"
- "officePhoneNumber"
- "dateOfBirth"
- "legalSex"
- "deceased"
properties:
firstName:
type: "string"
example: "John"
description: "First name, derived from the person's\
\ current UW affiliations."
lastName:
type: "string"
example: "Smith"
description: "Last name, derived from the person's current\
\ UW affiliations."
emailAddress:
type: "string"
example: "john.smith@wisc.edu"
description: "The email address this person has designated\
\ as their primary, if set. Otherwise, their Campus\
\ Business Email, or other email derived from their\
\ current UW affiliations."
officeAddress:
type: "string"
description: "Primary work-related address derived from\
\ the person's current UW affiliations. May or may\
\ not be a fully-formed street address."
example: "1210 W. Dayton Street Madison, WI 53706-1613"
nullable: true
officePhoneNumber:
type: "string"
example: "608-262-1204"
description: "Primary work-related phone number derived\
\ from the person's current UW affiliations. May\
\ or may not be associated with the officeAddress."
nullable: true
dateOfBirth:
type: "string"
format: "date"
example: "1980-01-01"
description: "Date of birth. This is a sensitive attribute\
\ and is only available if the requesting application\
\ has the 'Sensitive Person Demographics' permission."
legalSex:
type: "string"
enum:
- "Female"
- "Male"
- "Non-binary"
- "Other"
- "Unknown"
example: "Male"
description: "Legal sex. This is a sensitive attribute\
\ and is only available if the requesting application\
\ has the 'Sensitive Person Demographics' permission."
deceased:
type: "boolean"
example: false
description: "Indicates whether or not this person is\
\ deceased. This is a sensitive attribute and is\
\ only available if the requesting application has\
\ the 'Sensitive Person Demographics' permission."
nullable: true
continuousServiceDate:
type: "string"
format: "date"
example: "2000-01-01"
description: "Adjusted date of civil service employment\
\ with the state of Wisconsin - required for a classified\
\ permanent job. The adjusted continuous service date\
\ is used, for example, to allocate annual vacation\
\ for leave accounting, and to rank employees for\
\ layoff provisions, including reinstatements, etc.\
\ Please see https://policy.wisc.edu/library/UW-5029\
\ for more details."
relationships:
type: "object"
required:
- "identifiers"
- "jobs"
- "names"
- "wiscard"
- "addresses"
- "phoneNumbers"
- "emailAddresses"
- "affiliations"
properties:
identifiers:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "array"
items:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
jobs:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "array"
items:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
names:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "array"
items:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
wiscard:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
addresses:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "array"
items:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
phoneNumbers:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "array"
items:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
emailAddresses:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "array"
items:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
affiliations:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "array"
items:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
links:
description: "The link to access a resource itself"
type: "object"
properties:
self:
type: "string"
example: "https://api.wisc.edu/link/to/self"
meta:
type: "object"
properties:
ferpa:
type: "boolean"
example: false
description: "Indicates whether or not a student has\
\ elected FERPA coverage on one or more of their attributes.\
\ Please see https://registrar.wisc.edu/ferpa/ for\
\ more details about how to handle FERPA data."
ferpaAttributes:
type: "array"
items:
type: "string"
description: "Not currently used."
privateAttributes:
type: "array"
items:
type: "string"
description: "Not currently used."
links:
description: "Self and pagination links"
allOf:
- description: "The link to access a resource itself"
type: "object"
properties:
self:
type: "string"
example: "https://api.wisc.edu/link/to/self"
- description: "The links associated with a paginated collection"
type: "object"
properties:
self:
description: "The current page of data"
type: "string"
format: "uri-reference"
example: "https://api.wisc.edu/people?page[after]=6"
prev:
description: "The previous page of data"
type: "string"
format: "uri-reference"
example: "https://api.wisc.edu/people?page[before]=7"
next:
description: "The next page of data"
type: "string"
format: "uri-reference"
example: "https://api.wisc.edu/people?page[after]=8"
first:
description: "Available when using offset pagination. The\
\ first page of data"
type: "string"
format: "uri-reference"
example: "https://api.wisc.edu/people?page[number]=1"
last:
description: "Available when using offset pagination. The\
\ last page of data"
type: "string"
format: "uri-reference"
example: "https://api.wisc.edu/people?page[number]=10"
meta:
type: "object"
properties:
paging:
type: "object"
properties:
totalPeople:
type: "integer"
example: 100
description: "The total number of people available for\
\ the collection"
example: 100
description: "The total number of people in the collection"
included:
description: "Included related resources"
type: "array"
items:
description: "A generic resource object"
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
attributes:
type: "object"
properties:
attribute1:
type: "string"
example: "sampleStringAttribute"
attribute2:
type: "number"
example: 123
relationships:
type: "object"
properties:
relatedResource:
description: "A generic relationship object"
type: "object"
properties:
links:
type: "object"
properties:
related:
type: "string"
example: "https://api.wisc.edu/link/to/related/object"
data:
type: "object"
properties:
type:
type: "string"
example: "sampleType"
id:
type: "string"
example: "sampleId"
links:
description: "The link to access a resource itself"
type: "object"
properties:
self:
type: "string"
example: "https://api.wisc.edu/link/to/self"
examples:
example-people:
value:
data:
- attributes:
emailAddress: "john.smith@wisc.edu"
firstName: "John"
lastName: "Smith"
officeAddress: "1210 W Dayton St, Madison, WI 53706"
officePhoneNumber: "608-555-1234"
dateOfBirth: "1980-01-01"
legalSex: "Male"
deceased: false
continuousServiceDate: "2000-01-01"
id: "100"
links:
self: "https://api.wisc.edu/people/100"
meta:
ferpa: false
ferpaAttributes: []
privateAttributes: []
relationships:
identifiers:
data:
- id: "100"
type: "identifiers"
links:
related: "https://api.wisc.edu/people/100/identifiers"
jobs:
data:
- id: "100"
type: "jobs"
links:
related: "https://api.wisc.edu/people/100/jobs"
names:
data:
- id: "100"
type: "names"
links:
related: "https://api.wisc.edu/people/100/names"
wiscard:
data:
id: "100"
type: "wiscard"
links:
related: "https://api.wisc.edu/people/100/wiscard"
addresses:
data:
- id: "100"
type: "addresses"
links:
related: "https://api.wisc.edu/people/100/addresses"
phoneNumbers:
data:
- id: "100"
type: "phoneNumbers"
links:
related: "https://api.wisc.edu/people/100/phoneNumbers"
emailAddresses:
data:
- id: "100"
type: "emailAddresses"
links:
related: "https://api.wisc.edu/people/100/emailAddresses"
affiliations:
data:
- id: "100"
type: "affiliations"
links:
related: "https://api.wisc.edu/people/100/affiliations"
type: "people"
links:
self: "https://api.wisc.edu/people"
"400":
description: "A bad request."
content:
application/vnd.api+json:
schema:
type: "object"
properties:
errors:
type: "array"
items:
description: "An error"
type: "object"
properties:
status:
type: "integer"
example: 400
title:
type: "string"
example: "Error title"
detail:
type: "string"
example: "Additional details about the error"
links:
type: "object"
# --- truncated at 32 KB (1054 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-wisconsin-madison/refs/heads/main/openapi/university-of-wisconsin-madison-mock-person-api-certificates-openapi.yml