openapi: 3.0.3
info:
  title: apidoc api
  version: 0.0.5
  description: Host API documentation for applications providing REST APIs, facilitating
    the design of good resource first APIs.
servers:
- url: http://api.apidoc.me
paths:
  /_internal_/healthcheck:
    get:
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComBryzekApidocGeneratorV0ModelsHealthcheck'
  /_internal_/migrate:
    get:
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
  /attributes:
    get:
      description: Search all attributes. Results are always paginated.
      parameters:
      - name: guid
        in: query
        description: Find the watch with this guid.
        required: false
        schema:
          type: string
          format: uuid
      - name: name
        in: query
        description: Find attributes with this name. Case in-sensitive. Exact match
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttribute'
    post:
      description: Create a new attribute.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttributeForm'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttribute'
        '401':
          description: Unauthorized
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /attributes/{name}:
    get:
      description: Returns the attribute with this name.
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttribute'
        '404':
          description: Not found
    delete:
      description: Deletes the attribute with this name. Only the user who created
        an attribute can delete it.
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /changes:
    get:
      parameters:
      - name: org_key
        in: query
        description: Filter changes to those made for the organization with this key.
        required: false
        schema:
          type: string
      - name: application_key
        in: query
        description: Filter changes to those made for the application with this key.
        required: false
        schema:
          type: string
      - name: from
        in: query
        description: Filter changes to those made from this version.
        required: false
        schema:
          type: string
        example: 0.1.3
      - name: to
        in: query
        description: Filter changes to those made to this version.
        required: false
        schema:
          type: string
        example: 0.1.4
      - name: type
        in: query
        description: The type of diff to return.
        required: false
        schema:
          type: string
        example: breaking or non_breaking
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsChange'
  /domains/{orgKey}:
    post:
      description: Add a domain to this organization
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsDomain'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsDomain'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /domains/{orgKey}/{name}:
    delete:
      description: Remove this domain from this organization
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content
  /email_verification_confirmations:
    post:
      description: Validate an email address using a token.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsEmailVerificationConfirmationForm'
        required: true
      responses:
        '204':
          description: No content
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /generator_services:
    get:
      description: List all generator services
      parameters:
      - name: guid
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: uri
        in: query
        required: false
        schema:
          type: string
      - name: generator_key
        in: query
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsGeneratorService'
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsGeneratorServiceForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsGeneratorService'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /generator_services/{guid}:
    get:
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsGeneratorService'
        '404':
          description: Not found
    delete:
      description: Deletes a generator service.
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Service successfully deleted
        '404':
          description: Service not found
        '403':
          description: Request is not authorized
  /generators:
    get:
      description: List all available generators
      parameters:
      - name: guid
        in: query
        description: Filter to generator with this guid
        required: false
        schema:
          type: string
          format: uuid
      - name: service_guid
        in: query
        description: Filter to generator from this service
        required: false
        schema:
          type: string
          format: uuid
      - name: service_uri
        in: query
        description: Filter to generator from this service URI
        required: false
        schema:
          type: string
      - name: attribute_name
        in: query
        description: Filter to generators that use this attribute
        required: false
        schema:
          type: string
      - name: key
        in: query
        description: Filter to generator with this key
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsGeneratorWithService'
  /generators/{key}:
    get:
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsGeneratorWithService'
        '404':
          description: Not found
  /items:
    get:
      parameters:
      - name: q
        in: query
        description: The search query. At the moment, we do case insensitive exact
          match search.
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsItem'
  /items/{guid}:
    get:
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsItem'
        '404':
          description: Not found
  /membership_requests:
    get:
      description: Search all membership requests. Results are always paginated.
      parameters:
      - name: org_guid
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: org_key
        in: query
        required: false
        schema:
          type: string
      - name: user_guid
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: role
        in: query
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsMembershipRequest'
    post:
      description: Create a membership request
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - org_guid
              - user_guid
              - role
              properties:
                org_guid:
                  type: string
                  format: uuid
                user_guid:
                  type: string
                  format: uuid
                role:
                  type: string
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsMembershipRequest'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /membership_requests/{guid}/accept:
    post:
      description: Accepts this membership request. User will become a member of the
        specified organization.
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No content
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /membership_requests/{guid}/decline:
    post:
      description: Declines this membership request. User will NOT become a member
        of the specified organization.
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No content
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /memberships:
    get:
      description: Search all memberships. Results are always paginated.
      parameters:
      - name: org_guid
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: org_key
        in: query
        required: false
        schema:
          type: string
      - name: user_guid
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: role
        in: query
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsMembership'
  /memberships/{guid}:
    get:
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsMembership'
        '404':
          description: Not found
    delete:
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No content
  /organizations:
    get:
      description: Search all organizations. Results are always paginated.
      parameters:
      - name: guid
        in: query
        description: Finds the organization with this guid, if any
        required: false
        schema:
          type: string
          format: uuid
      - name: user_guid
        in: query
        description: If specified, restricts to organizations that this user is specifically
          a member of (e.g. will exclude public organizations with which the user
          does not have a direct membership).
        required: false
        schema:
          type: string
          format: uuid
      - name: key
        in: query
        description: Find organizations with this key. Case in-sensitive. Exact match
        required: false
        schema:
          type: string
      - name: name
        in: query
        description: Find organizations with this name. Case in-sensitive. Exact match
        required: false
        schema:
          type: string
      - name: namespace
        in: query
        description: Find organizations with this namespace. Case in-sensitive. Exact
          match
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganization'
    post:
      description: Create a new organization.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganizationForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganization'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /organizations/{key}:
    get:
      description: Returns the organization with this key.
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganization'
        '404':
          description: Not found
    put:
      description: Update an organization.
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganizationForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganization'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
    delete:
      description: Deletes an organization and all of its associated applications.
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content
  /organizations/{key}/attributes:
    get:
      description: Returns all attribute values for this organization. Results are
        always paginated.
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: query
        description: Find the values for the attribute with this name.
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttributeValue'
  /organizations/{key}/attributes/{name}:
    get:
      description: Returns the attribute value with this name.
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttributeValue'
        '404':
          description: Not found
    put:
      description: Create or update a new attribute value.
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttributeValueForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttributeValue'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttributeValue'
        '404':
          description: Not found
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
    delete:
      description: Deletes the attribute value with the specified name. Only the user
        who created an attribute value can delete it.
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /password_reset_requests:
    post:
      description: Create a new password reset. This will send the user an email with
        a link to reset their password.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsPasswordResetRequest'
        required: true
      responses:
        '204':
          description: No content
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /password_resets:
    post:
      description: Change the password for this token. If the token is invalid, has
        been used, or otherwise no longer can be applied, errors will be returned
        as 409s. A 204 represents that the user has successfully changed their password.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsPasswordReset'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsPasswordResetSuccess'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /subscriptions:
    get:
      description: Search subscriptions. Always paginated.
      parameters:
      - name: guid
        in: query
        description: Find the subscription with this guid.
        required: false
        schema:
          type: string
          format: uuid
      - name: organization_key
        in: query
        description: Find subscriptions for this organization.
        required: false
        schema:
          type: string
      - name: user_guid
        in: query
        description: Find subscriptions for this user.
        required: false
        schema:
          type: string
          format: uuid
      - name: publication
        in: query
        description: Find subscriptions for this publication.
        required: false
        schema:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsPublication'
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsSubscription'
    post:
      description: Create a new subscription.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsSubscriptionForm'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsSubscription'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /subscriptions/{guid}:
    get:
      description: Returns information about a specific subscription.
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsSubscription'
        '404':
          description: Not found
    delete:
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No content
  /tokens:
    post:
      description: Create a new API token for this user
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsTokenForm'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsToken'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /tokens/users/{user_guid}:
    get:
      parameters:
      - name: user_guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: guid
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsToken'
  /tokens/{guid}:
    delete:
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No content
  /tokens/{guid}/cleartext:
    get:
      description: Used to fetch the clear text token.
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsCleartextToken'
        '404':
          description: Not found
  /users:
    get:
      description: Search for a specific user. You must specify at least 1 parameter
        - either a guid, email or token - and will receive back either 0 or 1 users.
      parameters:
      - name: guid
        in: query
        description: Find user with this guid. Exact match
        required: false
        schema:
          type: string
          format: uuid
      - name: email
        in: query
        description: Find user with this email address. Case in-sensitive. Exact match
        required: false
        schema:
          type: string
      - name: token
        in: query
        description: Find the user with this API token. Exact match
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
    post:
      description: Create a new user.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUserForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /users/authenticate:
    post:
      description: Used to authenticate a user with an email address and password.
        Successful authentication returns an instance of the user model. Failed authorizations
        of any kind are returned as a generic error with code user_authorization_failed.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - email
              - password
              properties:
                email:
                  type: string
                password:
                  type: string
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /users/{guid}:
    get:
      description: Returns information about the user with this guid.
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
        '404':
          description: Not found
    put:
      description: Updates information about the user with the specified guid.
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUserUpdateForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /validations:
    post:
      requestBody:
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsValidation'
  /watches:
    get:
      description: Search attributes. Always paginated.
      parameters:
      - name: guid
        in: query
        description: Find the watch with this guid.
        required: false
        schema:
          type: string
          format: uuid
      - name: user_guid
        in: query
        description: Find attributes for this user.
        required: false
        schema:
          type: string
          format: uuid
      - name: organization_key
        in: query
        description: Find attributes for this organization.
        required: false
        schema:
          type: string
      - name: application_key
        in: query
        description: Find attributes for this application.
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsWatch'
    post:
      description: Create a new watch.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsWatchForm'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsWatch'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /watches/check:
    get:
      description: Quick check if a user is watching a specific application.
      parameters:
      - name: user_guid
        in: query
        description: The user for which we are checking. API returns false if the
          user guid is not provided
        required: false
        schema:
          type: string
          format: uuid
      - name: organization_key
        in: query
        required: true
        schema:
          type: string
      - name: application_key
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: boolean
  /watches/{guid}:
    get:
      description: Returns information about a specific watch.
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsWatch'
        '404':
          description: Not found
    delete:
      parameters:
      - name: guid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No content
  /{orgKey}:
    get:
      description: Search all applications. Results are always paginated.
      parameters:
      - name: orgKey
        in: path
        description: The organization key for which to search applications
        required: true
        schema:
          type: string
      - name: name
        in: query
        description: The name of an application. Case in-sensitive. Exact match
        required: false
        schema:
          type: string
      - name: guid
        in: query
        description: The guid of an application. Exact match
        required: false
        schema:
          type: string
          format: uuid
      - name: key
        in: query
        description: The key of an application. Case in-sensitive. Exact match
        required: false
        schema:
          type: string
      - name: has_version
        in: query
        description: If true, we return applications that have at least one version.
          If false, we return applications that have no versions in the system
        required: false
        schema:
          type: boolean
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsApplication'
    post:
      description: Create an application.
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsApplicationForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsApplication'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /{orgKey}/{applicationKey}:
    get:
      description: Search all versions of this application. Results are always paginated.
      parameters:
      - name: orgKey
        in: path
        description: The organization key for which to search versions
        required: true
        schema:
          type: string
      - name: applicationKey
        in: path
        description: The application key for which to search versions
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: The number of records to return
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: Used to paginate. First page of results is 0.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsVersion'
    put:
      description: Updates an application.
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      - name: applicationKey
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsApplicationForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsApplication'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
    post:
      description: Create a new version for an application
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsVersionForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsVersion'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
    delete:
      description: Deletes a specific application and its associated versions.
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      - name: applicationKey
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content
  /{orgKey}/{applicationKey}/move:
    post:
      description: Moves application to a new organization.
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      - name: applicationKey
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsMoveForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsApplication'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
  /{orgKey}/{applicationKey}/{version}:
    get:
      description: Retrieve a specific version of an application.
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      - name: applicationKey
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        description: The version of tthis application to download, or the keyword
          latest to get the latest version
        required: true
        schema:
          type: string
        example: latest
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsVersion'
        '404':
          description: Not found
    put:
      description: Upsert a version of an application
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      - name: applicationKey
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsVersionForm'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsVersion'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
    delete:
      description: Deletes a specific version.
      parameters:
      - name: orgKey
        in: path
        required: true
        schema:
          type: string
      - name: applicationKey
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content
  /{orgKey}/{applicationKey}/{version}/{generatorKey}:
    get:
      description: Generate code for a specific version of an application.
      parameters:
      - name: orgKey
        in: path
        description: The organization key for which to generate code
        required: true
        schema:
          type: string
      - name: applicationKey
        in: path
        description: The application key for which to generate code
        required: true
        schema:
          type: string
      - name: version
        in: path
        description: The version of this application. Can be 'latest'
        required: true
        schema:
          type: string
      - name: generatorKey
        in: path
        description: The key of the generator to invoke
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsCode'
        '404':
          description: Not found
        '409':
          description: If the target, version, and/or generator are invalid.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsError'
components:
  schemas:
    JanuarApidocApidocApiV0ModelsGeneratorService:
      description: Defines a service that provides one or more code generators
      type: object
      required:
      - guid
      - uri
      - audit
      properties:
        guid:
          type: string
          format: uuid
        uri:
          type: string
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsMoveForm:
      type: object
      required:
      - org_key
      properties:
        org_key:
          description: The key of the organization to which we are moving this item
          type: string
    JanuarApidocApidocApiV0ModelsDiffNonBreaking:
      description: Represents a single NON breaking diff of an application version.
      type: object
      required:
      - description
      properties:
        description:
          example: name diffd from foo to bar
          type: string
    JanuarApidocApidocApiV0ModelsAttributeForm:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        description:
          type: string
    JanuarApidocApidocApiV0ModelsOrganization:
      description: An organization is used to group a set of applications together.
      type: object
      required:
      - guid
      - key
      - name
      - namespace
      - visibility
      - domains
      - audit
      properties:
        guid:
          description: Internal unique identifier for this organization.
          type: string
          format: uuid
        key:
          description: Used as a unique key in the URL path. Key is automatically
            derived from the organization name.
          type: string
        name:
          description: The name of this organization.
          type: string
        namespace:
          description: Global namespace for this organization.
          example: com.bryzek
          type: string
        visibility:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsVisibility'
        domains:
          type: array
          items:
            $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsDomain'
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsAttributeSummary:
      type: object
      required:
      - guid
      - name
      properties:
        guid:
          description: Internal unique identifier for this attribute.
          type: string
          format: uuid
        name:
          description: The name of the attribute. Globally unique and an 'identifier'
            (lower case, url safe, etc.)
          type: string
    JanuarApidocApidocApiV0ModelsOriginal:
      description: Represents the original input used to create an application version
      type: object
      required:
      - type
      - data
      properties:
        type:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsOriginalType'
        data:
          type: string
    JanuarApidocApidocApiV0ModelsCode:
      description: Generated source code.
      type: object
      required:
      - generator
      - source
      - files
      properties:
        generator:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsGeneratorWithService'
        source:
          description: The actual source code.
          deprecated: true
          type: string
        files:
          description: A collection of source files
          type: array
          items:
            $ref: '#/components/schemas/ComBryzekApidocGeneratorV0ModelsFile'
    JanuarApidocApidocApiV0ModelsGeneratorWithService:
      description: Wraps a service and a generator providing easier access for applications.
      type: object
      required:
      - service
      - generator
      properties:
        service:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsGeneratorService'
        generator:
          $ref: '#/components/schemas/ComBryzekApidocGeneratorV0ModelsGenerator'
    JanuarApidocApidocApiV0ModelsUserForm:
      type: object
      required:
      - email
      - password
      properties:
        email:
          type: string
        password:
          type: string
        nickname:
          description: Defaults to a unique identifier based on email address
          type: string
        name:
          type: string
    JanuarApidocApidocApiV0ModelsEmailVerificationConfirmationForm:
      description: Data used to confirm an email address. The token is an internal
        unique identifier used to lookup the specific email address and user account
        for which we sent an email verification email.
      type: object
      required:
      - token
      properties:
        token:
          type: string
    JanuarApidocApidocApiV0ModelsError:
      type: object
      required:
      - code
      - message
      properties:
        code:
          description: Machine readable code for this specific error message
          type: string
        message:
          description: Description of the error
          type: string
    JanuarApidocApidocApiV0ModelsOrganizationForm:
      type: object
      required:
      - name
      - namespace
      - visibility
      properties:
        name:
          type: string
        key:
          description: Defaults to a url friendy version of the name
          type: string
        namespace:
          description: Global namespace for this organization.
          example: com.bryzek
          type: string
        visibility:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsVisibility'
          description: Public organizations will be listed in apidoc directory. Organizations
            with visibility organization will only be visible to members of that org.
        domains:
          example: apidoc.me
          type: array
          items:
            type: string
    JanuarApidocApidocApiV0ModelsApplicationForm:
      type: object
      required:
      - name
      - visibility
      properties:
        name:
          type: string
        key:
          description: Defaults to a key generated from the application name
          type: string
        description:
          type: string
        visibility:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsVisibility'
    JanuarApidocApidocApiV0ModelsAttributeValueForm:
      type: object
      required:
      - value
      properties:
        value:
          type: string
    JanuarApidocApidocApiV0ModelsVersionForm:
      type: object
      required:
      - original_form
      properties:
        original_form:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOriginalForm'
        visibility:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsVisibility'
          description: If provided, updates the visibility for all versions of this
            application
    JanuarApidocApidocApiV0ModelsChangeVersion:
      description: Represents a simpler model of a version specifically for the use
        case of displaying changes
      type: object
      required:
      - guid
      - version
      properties:
        guid:
          type: string
          format: uuid
        version:
          type: string
    JanuarApidocApidocApiV0ModelsMembership:
      description: A membership represents a user in a specific role to an organization.
        Memberships cannot be created directly. Instead you first create a membership
        request, then that request is either accepted or declined.
      type: object
      required:
      - guid
      - user
      - organization
      - role
      - audit
      properties:
        guid:
          description: Internal unique identifier for this membership.
          type: string
          format: uuid
        user:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
        organization:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganization'
        role:
          description: The role this user plays for this organization. Typically member
            or admin.
          example: member
          type: string
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsGeneratorForm:
      type: object
      required:
      - service_guid
      - generator
      properties:
        service_guid:
          type: string
          format: uuid
        generator:
          $ref: '#/components/schemas/ComBryzekApidocGeneratorV0ModelsGenerator'
    JanuarApidocApidocApiV0ModelsVersion:
      description: Represents a unique version of the application.
      type: object
      required:
      - guid
      - organization
      - application
      - version
      - service
      - audit
      properties:
        guid:
          description: Internal unique identifier for this version.
          type: string
          format: uuid
        organization:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsReference'
        application:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsReference'
        version:
          description: The tag for this version. Can be anything, but if semver style
            version number is used, we automatically correctly sort by version number
            to find latest. Otherwise latest version is considered to be the most
            recently created.
          example: 1.0.0
          type: string
        original:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOriginal'
          description: The original uploaded file describing this version, if available
        service:
          $ref: '#/components/schemas/ComBryzekApidocSpecV0ModelsService'
          description: spec/spec.json description of this API
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsPasswordReset:
      description: Allows a user to change their password with authentication from
        a token.
      type: object
      required:
      - token
      - password
      properties:
        token:
          description: Unique one time use token to change a password
          type: string
        password:
          type: string
    JanuarApidocApidocApiV0ModelsMembershipRequest:
      description: A membership request represents a user requesting to join an organization
        with a specific role (e.g. as a member or an admin). Membership requests can
        be reviewed by any current admin of the organization who can either accept
        or decline the request.
      type: object
      required:
      - guid
      - user
      - organization
      - role
      - audit
      properties:
        guid:
          description: Internal unique identifier for this membership request.
          type: string
          format: uuid
        user:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
        organization:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganization'
        role:
          description: The requested role for membership to this organization. Typically
            member or admin.
          example: member
          type: string
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsApplication:
      description: An application has a name and multiple versions of its API.
      type: object
      required:
      - guid
      - organization
      - name
      - key
      - visibility
      - audit
      properties:
        guid:
          description: Internal unique identifier for this application.
          type: string
          format: uuid
        organization:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsReference'
        name:
          description: The unique name for this application.
          type: string
        key:
          description: Used as a unique key in the URL path. Key is automatically
            derived from the application name.
          type: string
        visibility:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsVisibility'
          description: Controls who is able to view this application
        description:
          type: string
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsCleartextToken:
      description: Separate resource used only for the few actions that require the
        full token.
      type: object
      required:
      - token
      properties:
        token:
          description: The actual token. Guaranteed to be globally unique.
          type: string
    JanuarApidocApidocApiV0ModelsUserUpdateForm:
      type: object
      required:
      - email
      - nickname
      properties:
        email:
          type: string
        nickname:
          type: string
        name:
          type: string
    JanuarApidocApidocApiV0ModelsGeneratorServiceForm:
      type: object
      required:
      - uri
      properties:
        uri:
          type: string
    JanuarApidocApidocApiV0ModelsItem:
      description: When searching for content, the results of the search will be a
        list of items. Each item will have enough information to render for the user,
        including a type and item_guid to enable creating the appropriate link.
      type: object
      required:
      - guid
      - detail
      - label
      properties:
        guid:
          description: Unique identifer for this item. By using a UUID, you can combine
            with the type to figure out the URI for the resource
          type: string
          format: uuid
        detail:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0UnionsItemDetail'
        label:
          type: string
        description:
          type: string
    JanuarApidocApidocApiV0ModelsTokenForm:
      type: object
      required:
      - user_guid
      properties:
        user_guid:
          description: The user for which we are creating the token.
          type: string
          format: uuid
        description:
          type: string
    JanuarApidocApidocApiV0ModelsOriginalForm:
      type: object
      required:
      - data
      properties:
        type:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsOriginalType'
          description: If not specified, we set the type by inspecting the data
        data:
          type: string
    JanuarApidocApidocApiV0ModelsPasswordResetRequest:
      description: Create a password reset request - e.g. an email containing a one
        time URL to change a password
      type: object
      required:
      - email
      properties:
        email:
          description: The email address for which we generate the password reset.
          type: string
    JanuarApidocApidocApiV0ModelsSubscriptionForm:
      type: object
      required:
      - organization_key
      - user_guid
      - publication
      properties:
        organization_key:
          type: string
        user_guid:
          type: string
          format: uuid
        publication:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsPublication'
    JanuarApidocApidocApiV0ModelsUser:
      description: A user is a top level person interacting with the api doc server.
      type: object
      required:
      - guid
      - email
      - nickname
      - audit
      properties:
        guid:
          description: Internal unique identifier for this user.
          type: string
          format: uuid
        email:
          type: string
        nickname:
          description: Public unique identifier for this user.
          type: string
        name:
          type: string
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsDiffBreaking:
      description: Represents a single breaking diff of an application version. A
        breaking diff indicates that it is possible for an existing client to now
        experience an error or invalid data due to the diff.
      type: object
      required:
      - description
      properties:
        description:
          example: 'model removed: user'
          type: string
    JanuarApidocApidocApiV0ModelsPasswordResetSuccess:
      description: On a successful password reset, return some metadata about the
        user modified.
      type: object
      required:
      - user_guid
      properties:
        user_guid:
          type: string
          format: uuid
    JanuarApidocApidocApiV0ModelsWatchForm:
      type: object
      required:
      - user_guid
      - organization_key
      - application_key
      properties:
        user_guid:
          type: string
          format: uuid
        organization_key:
          type: string
        application_key:
          type: string
    JanuarApidocApidocApiV0ModelsDomain:
      description: Represents a single domain name (e.g. www.apidoc.me). When a new
        user registers and confirms their email, we automatically associate that user
        with a member of the organization associated with their domain. For example,
        if you confirm your account with an email address of foo@bryzek.com, we will
        automatically create a membership request on your behalf to join the organization
        with domain bryzek.com.
      type: object
      required:
      - name
      properties:
        name:
          description: The domain name
          example: www.apidoc.me
          type: string
    JanuarApidocApidocApiV0ModelsWatch:
      description: Users can watch individual applications which enables features
        like receiving an email notification when there is a new version of an application.
      type: object
      required:
      - guid
      - user
      - organization
      - application
      - audit
      properties:
        guid:
          description: Internal unique identifier for this watch
          type: string
          format: uuid
        user:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
        organization:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganization'
        application:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsApplication'
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsValidation:
      description: Used only to validate json files - used as a resource where http
        status code defines success
      type: object
      required:
      - valid
      - errors
      properties:
        valid:
          description: If true, the json schema is valid. If false, there is at least
            one validation error.
          type: boolean
        errors:
          description: Contains any validation errors that result from parsing the
            json document. If empty, the document is valid.
          type: array
          items:
            type: string
    JanuarApidocApidocApiV0ModelsUserSummary:
      description: Summary of a user sufficient for display
      type: object
      required:
      - guid
      - nickname
      properties:
        guid:
          type: string
          format: uuid
        nickname:
          type: string
    JanuarApidocApidocApiV0ModelsSubscription:
      description: Represents a user that is currently subscribed to a publication
      type: object
      required:
      - guid
      - organization
      - user
      - publication
      - audit
      properties:
        guid:
          description: Internal unique identifier for this subscription record
          type: string
          format: uuid
        organization:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsOrganization'
        user:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
        publication:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0EnumsPublication'
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsChange:
      description: Represents a single change from one version of a service to another
      type: object
      required:
      - guid
      - organization
      - application
      - from_version
      - to_version
      - diff
      - changed_at
      - changed_by
      - audit
      properties:
        guid:
          type: string
          format: uuid
        organization:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsReference'
        application:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsReference'
        from_version:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsChangeVersion'
        to_version:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsChangeVersion'
        diff:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0UnionsDiff'
        changed_at:
          description: Records the timestamp of when the actual change occurred (vs.
            when we created the changed record)
          type: string
          format: date-time
        changed_by:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUserSummary'
          description: Records who made the actual change
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsAttribute:
      description: Attributes are globally unique key which allow users to specify
        additional content to pass in to the code generators.
      type: object
      required:
      - guid
      - name
      - audit
      properties:
        guid:
          description: Internal unique identifier for this attribute.
          type: string
          format: uuid
        name:
          description: The name of the attribute. Globally unique and an 'identifier'
            (lower case, url safe, etc.)
          type: string
        description:
          description: Optional description - a good description here will indicate
            which code generators it applies to and what effect it will have on those
            code generators.
          type: string
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsApplicationSummary:
      description: Summary of an application sufficient for display and links
      type: object
      required:
      - guid
      - organization
      - key
      properties:
        guid:
          type: string
          format: uuid
        organization:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsReference'
        key:
          type: string
    JanuarApidocApidocApiV0ModelsAttributeValue:
      description: Attribute values can be set at different levels. Initially we support
        setting organization wide attributes, but in the future plan to support setting
        attribute values with each version of the application.
      type: object
      required:
      - guid
      - attribute
      - value
      - radomstuff
      - audit
      properties:
        guid:
          description: Internal unique identifier for this attribute value.
          type: string
          format: uuid
        attribute:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsAttributeSummary'
        value:
          type: string
        radomstuff:
          type: string
        radomstuff2:
          type: string
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0ModelsToken:
      description: A token gives a user access to the API.
      type: object
      required:
      - guid
      - user
      - masked_token
      - audit
      properties:
        guid:
          description: Internal unique identifier for this token.
          type: string
          format: uuid
        user:
          $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsUser'
          description: The user to which this token belongs.
        masked_token:
          description: The masked from of the token.
          type: string
        description:
          description: optional description to help the user manage the token.
          type: string
        audit:
          $ref: '#/components/schemas/ComBryzekApidocCommonV0ModelsAudit'
    JanuarApidocApidocApiV0EnumsVisibility:
      description: Controls who is able to view this version
      type: string
      enum:
      - user
      - organization
      - public
    JanuarApidocApidocApiV0EnumsPublication:
      description: A publication represents something that a user can subscribe to.
        An example would be subscribing to an email alert whenever a new version of
        an application is created.
      type: string
      enum:
      - membership_requests.create
      - memberships.create
      - applications.create
      - versions.create
    JanuarApidocApidocApiV0EnumsOriginalType:
      type: string
      enum:
      - api_json
      - avro_idl
      - service_json
      - swagger_json
    JanuarApidocApidocApiV0UnionsItemDetail:
      description: Identifies the specific type of item that was indexed by search
      oneOf:
      - $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsApplicationSummary'
    JanuarApidocApidocApiV0UnionsDiff:
      description: Represents a single diff in an application
      oneOf:
      - $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsDiffBreaking'
      - $ref: '#/components/schemas/JanuarApidocApidocApiV0ModelsDiffNonBreaking'
