Mock Person API

Openly published mock of the Person API on mock.api.wisc.edu, mirroring all 47 operations so the contract and data shape are public even though production data is not. An unusually good practice for an institution of this cohort.

OpenAPI Specification

university-of-wisconsin-madison-mock-person-api-openapi.yml Raw ↑
---
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: "advancedFilter"
        in: "query"
        description: "Filter results of query using the [Advanced Filter](https://kb.wisc.edu/uw-apis/158404#advanced-filters)."
        required: false
        style: "deepObject"
        explode: true
        schema:
          type: "object"
          additionalProperties: false
          properties:
            attribute:
              type: "string"
              example: "and(equals(firstName, \"John\"), equals(lastName, \"Doe\"\
                ))"
      - name: "filterIncluded"
        in: "query"
        description: "Filter the resources returned in the `included` section of the\
          \ response. Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404#filter-included)\
          \ for more information about the `filterIncluded` query param."
        required: false
        style: "deepObject"
        explode: true
        schema:
          type: "object"
          additionalProperties: false
          properties:
            relationship:attribute:
              type: "string"
              example: "jobs:title"
            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 relationships can be direct or nested relationships. Direct relationships,\
          \ i.e. `include=jobs,identifiers`, will just include those relationships.\
          \  Nested relationships, i.e. `include=jobs.costAllocations.worktags`, will\
          \ include all intermediate relationships, i.e. jobs, jobs.costAllocations,\
          \ and jobs.costAllocations.worktags.  The total number of included relationships,\
          \ accounting for intermediate relationships, is limited to 10."
        schema:
          type: "string"
          enum:
          - "academicAppointments"
          - "addresses"
          - "affiliations"
          - "degrees"
          - "emailAddresses"
          - "identifiers"
          - "jobs"
          - "names"
          - "organizationStructures"
          - "phoneNumbers"
          - "socialSecurityNumbers"
          - "wiscard"
      - name: "filter[relationship.attribute]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter resources by `relationship.attribute`."
        schema:
          type: "string"
          nullable: true
      - name: "filter[firstName]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `firstName`."
        schema:
          type: "string"
          nullable: true
      - name: "filter[lastName]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `lastName`."
        schema:
          type: "string"
          nullable: true
      - name: "filter[emailAddress]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `emailAddress`."
        schema:
          type: "string"
          nullable: true
      - name: "filter[officeAddress]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `officeAddress`."
        schema:
          type: "string"
          nullable: true
      - name: "filter[officePhoneNumber]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `officePhoneNumber`."
        schema:
          type: "string"
          nullable: true
      - name: "filter[dateOfBirth]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `dateOfBirth`."
        schema:
          type: "string"
          format: "date"
          pattern: "^[1-9][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$"
      - name: "filter[legalSex]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `legalSex`."
        schema:
          type: "string"
          enum:
          - "Female"
          - "Male"
          - "Non-binary"
          - "Other"
          - "Unknown"
      - name: "filter[deceased]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `deceased`."
        schema:
          type: "boolean"
          nullable: true
      - name: "filter[continuousServiceDate]"
        in: "query"
        required: false
        description: "Filter results using the [filter query parameter family](https://jsonapi.org/recommendations/#filtering).\
          \ Refer to the [Person API Documentation](https://kb.wisc.edu/uw-apis/158404)\
          \ for more information. Filter `people` resources by `continuousServiceDate`."
        schema:
          type: "string"
          format: "date"
          pattern: "^[1-9][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$"
      - name: "page[size]"
        in: "query"
        required: false
        description: "Number of resources to return per page. Maximum 1000, default\
          \ 100."
        schema:
          type: "integer"
          minimum: 1
          maximum: 1000
          default: 100
      - name: "page[after]"
        in: "query"
        required: false
        description: "Cursor for the next page — the ID of the last resource on the\
          \ previous page. Use the value returned in response `links.next`."
        schema:
          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."
      - name: "page[before]"
        in: "query"
        required: false
        description: "Cursor for the previous page — the ID of the first resource\
          \ on the next page. Use the value returned in response `links.prev`."
        schema:
          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."
      - name: "page[number]"
        in: "query"
        required: false
        description: "Page number for offset pagination. Disabled by default — contact\
          \ the developers to enable. Prefer cursor pagination (page[after] / page[before])\
          \ for better performance."
        schema:
          type: "integer"
          minimum: 1
      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."
                        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."
                              nullable: true
                            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."
                              nullable: true
                            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."
                              nullable: true
                        relationships:
                          type: "object"
                          required:
                          - "identifiers"
                          - "jobs"
                          - "names"
                          - "wiscard"
                          - "addresses"
                          - "phoneNumbers"
                          - "emailAddresses"
                          - "affiliations"
                          properties:
                            academicAppointments:
                              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"
                            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"
                            degrees:
                              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"
                            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"
                            organizationStructures:
                              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"
                            socialSecurityNumbers:
                              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"
                                  nullable: true
                        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"
                          required: []
                          properties:
                            ferpa:
                              type: "boolean"
                              example: false
                              descriptio

# --- truncated at 32 KB (1752 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-openapi.yml