{
  "endpoint": "InvitationHandler",
  "preferredHttpPath": "i",
  "alternateHttpPaths": [
    "HttpInvitation"
  ],
  "summary": "Invitation-related APIs.",
  "description": "Invitations are standalone objects with a lifetime of their own.\n            When a user activates an invitation, they are given the rights specified by the invitation.\n            They can be limited to a specific time window, or limited in the maximum number of activations.\n            They can be deactivated by the creator at any time.\n            Invitations may be distributed using links through email, text, or any other means, or, more often, using a QR code.",
  "apis": [
    {
      "name": "ActivateInvitation",
      "httpMethod": "POST",
      "httpPathRegex": "^/invitation/(?<inviteId>[^?/&]+)/activate",
      "subPathPattern": "/invitation/{inviteId}/activate",
      "summary": "Activates the specified Invitation.\n            Any authenticated user can activate a Invitation.",
      "description": "On activation,\n            1. the start(s)/end(s) are checked first\n            2. activation attempt is recorded by either user id or activation time, depending on which we are limited on, by activation time if not limited, with the limit being checked afterwards\n            3. link template is expanded and links are created\n            4. the post activation target is navigated to\n            \n            Link activation will enable the following scenarios:\n            1. Link the activator as having been referred by another user (and possibly allow them to create their own full account)\n            2. Add the activator as a \"friend\" of another user\n            3. Add the activator as an upload-only user of a collection\n            4. Add the activator as a guest with specific rights to a collection\n            \n            We may add other properties to the code to perform more complex actions.\n            \n            Exceptions include:\n             o TokenNotYetValidException: The invitation's start date has not arrived yet.\n             o TokenExpiredException: The invitation's end date has passed.\n             o TokenRevokedException: The invitation has been temporarily disabled.\n             o LimitExceededException: The invitation has already been activated the maximum number of times allowed.\n             o RestrictionViolatedException: The invitation is restricted to users with specific contact information, and the activator's contact information is not in the approved list.\n             o BadRequestException: A conflicting link would be created by the activation.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The <see cref=\"T:AmbientServices.InviteCodeId\" /> for the Invitation being activated."
        },
        {
          "name": "requiredPassword",
          "required": false,
          "type": "String?",
          "description": "The secret required password (if one is required)."
        }
      ],
      "return": {
        "type": "ActivateInvitationResponse",
        "description": "A <see cref=\"T:PicMeApi.ActivateInvitationResponse\" /> containing the post activation target."
      }
    },
    {
      "name": "SimulateInvitationActivation",
      "httpMethod": "POST",
      "httpPathRegex": "^/invitation/(?<inviteId>[^?/&]+)/simulate",
      "subPathPattern": "/invitation/{inviteId}/simulate",
      "summary": "Tests to see if the specified invitation can be activated (without actually activating it) to be sure the specified password works with the specified invitation, ensuring that a subsequent call to <see cref=\"M:PicMeApi.InvitationsApis.ActivateInviteCode(AmbientServices.Database,AmbientServices.Auth,PicMeApi.AuthData,AmbientServices.InviteCodeId,System.String)\" /> will succeed.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The <see cref=\"T:AmbientServices.InviteCodeId\" /> for the Invitation being activated."
        },
        {
          "name": "requiredPassword",
          "required": false,
          "type": "String?",
          "description": "The secret required password (if one is required)."
        }
      ],
      "return": {
        "type": "ActivateInvitationResponse",
        "description": "A <see cref=\"T:PicMeApi.ActivateInvitationResponse\" /> with the response."
      }
    },
    {
      "name": "ListInvitationActivatedUsers",
      "httpMethod": "GET",
      "httpPathRegex": "^/invitation/(?<inviteId>[^?/&]+)/users",
      "subPathPattern": "/invitation/{inviteId}/users",
      "summary": "Lists all users who have activated the specified Invitation.\n            Note that this includes users who activated the code and then had their rights revoked.\n            Requires ownership of the Invitation.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The <see cref=\"T:AmbientServices.InviteCodeId\" /> for the collection whose links are wanted."
        }
      ],
      "return": {
        "type": "ActivatedUserData[]",
        "description": "A <see cref=\"T:PicMeApi.ActivatedUserData\" />[] containing the users."
      }
    },
    {
      "name": "ActivateInviteCode",
      "httpMethod": "POST",
      "httpPathRegex": "^/invite/(?<inviteId>[^?/&]+)/activate",
      "subPathPattern": "/invite/{inviteId}/activate",
      "status": "deprecated",
      "notes": "This endpoint is deprecated. Use /invitation instead.",
      "summary": "Activates the specified Invitation.\n            Any authenticated user can activate a Invitation.",
      "description": "On activation,\n            1. the start(s)/end(s) are checked first\n            2. activation attempt is recorded by either user id or activation time, depending on which we are limited on, by activation time if not limited, with the limit being checked afterwards\n            3. link template is expanded and links are created\n            4. the post activation target is navigated to\n            \n            Link activation will enable the following scenarios:\n            1. Link the activator as having been referred by another user (and possibly allow them to create their own full account)\n            2. Add the activator as a \"friend\" of another user\n            3. Add the activator as an upload-only user of a collection\n            4. Add the activator as a guest with specific rights to a collection\n            \n            We may add other properties to the code to perform more complex actions.\n            \n            Exceptions include:\n             o TokenNotYetValidException: The invitation's start date has not arrived yet.\n             o TokenExpiredException: The invitation's end date has passed.\n             o TokenRevokedException: The invitation has been temporarily disabled.\n             o LimitExceededException: The invitation has already been activated the maximum number of times allowed.\n             o RestrictionViolatedException: The invitation is restricted to users with specific contact information, and the activator's contact information is not in the approved list.\n             o BadRequestException: A conflicting link would be created by the activation.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The <see cref=\"T:AmbientServices.InviteCodeId\" /> for the Invitation being activated."
        },
        {
          "name": "requiredPassword",
          "required": false,
          "type": "String?",
          "description": "The secret required password (if one is required)."
        }
      ],
      "return": {
        "type": "ActivateInviteCodeResponse",
        "description": "A <see cref=\"M:PicMeApi.InvitationsApis.ActivateInviteCode(AmbientServices.Database,AmbientServices.Auth,PicMeApi.AuthData,AmbientServices.InviteCodeId,System.String)\" /> containing the post activation target."
      }
    },
    {
      "name": "SimulateInviteCodeActivation",
      "httpMethod": "POST",
      "httpPathRegex": "^/invite/(?<inviteId>[^?/&]+)/simulate",
      "subPathPattern": "/invite/{inviteId}/simulate",
      "status": "deprecated",
      "notes": "This endpoint is deprecated. Use /invitation instead.",
      "summary": "Tests to see if the specified invitation can be activated (without actually activating it) to be sure the specified password works with the specified invitation, ensuring that a subsequent call to <see cref=\"M:PicMeApi.InvitationsApis.ActivateInviteCode(AmbientServices.Database,AmbientServices.Auth,PicMeApi.AuthData,AmbientServices.InviteCodeId,System.String)\" /> will succeed.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The <see cref=\"T:AmbientServices.InviteCodeId\" /> for the Invitation being activated."
        },
        {
          "name": "requiredPassword",
          "required": false,
          "type": "String?",
          "description": "The secret required password (if one is required)."
        }
      ],
      "return": {
        "type": "ActivateInviteCodeResponse",
        "description": "A <see cref=\"T:PicMeApi.ActivateInviteCodeResponse\" /> with the response."
      }
    },
    {
      "name": "ListActivatedUsers",
      "httpMethod": "GET",
      "httpPathRegex": "^/invite/(?<inviteId>[^?/&]+)/users",
      "subPathPattern": "/invite/{inviteId}/users",
      "status": "deprecated",
      "notes": "This endpoint is deprecated. Use /invitation instead.",
      "summary": "Lists all users who have activated the specified Invitation.\n            Note that this includes users who activated the code and then had their rights revoked.\n            Requires ownership of the Invitation.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The <see cref=\"T:AmbientServices.InviteCodeId\" /> for the collection whose links are wanted."
        }
      ],
      "return": {
        "type": "ListInvitationActivatedUsersResponse",
        "description": "A <see cref=\"T:PicMeApi.ListInvitationActivatedUsersResponse\" /> containing the response."
      }
    },
    {
      "name": "GetInvitation",
      "httpMethod": "GET",
      "httpPathRegex": "^/invitation/(?<inviteId>[^?/&]+)",
      "subPathPattern": "/invitation/{inviteId}",
      "summary": "Gets the specified Invitation object.\n            Any authenticated user can call this API, whether they're related to the Invitation or its owner or not.\n            However, for security reasons, the <see cref=\"P:PicMeModel.LinkActivator.RestrictToContacts\" /> field is only populated if the caller is the owner of the Invitation.\n            If the caller is not the owner, however, the <see cref=\"P:PicMeModel.LinkActivator.RestrictToContacts\" /> field is null if there are no restrictions, or an empty array if there are some restrictions.\n            Also, the <see cref=\"P:PicMeModel.LinkActivator.PasswordRequired\" /> field is masked to an empty string if there is a password.  \n            An empty string for the password required property (as opposed to null) indicates to the client that a password is required to activate, but doesn't reveal the password itself.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The ID of the Invitation to retrieve."
        }
      ],
      "return": {
        "type": "InviteCode",
        "description": "A <see cref=\"T:PicMeModel.InviteCode\" />."
      }
    },
    {
      "name": "PatchInvitation",
      "httpMethod": "PATCH",
      "httpPathRegex": "^/invitation/(?<inviteId>[^?/&]+)",
      "subPathPattern": "/invitation/{inviteId}",
      "summary": "Updates a Invitation object from the specified parameters.\n            Only the Invitation's creator can patch it.",
      "description": "The resulting <see cref=\"P:PicMeModel.InviteCode.LinkActivator\" /> must satisfy the same rules as <see cref=\"M:PicMeApi.InvitationsApis.CreateInvitation(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,PicMeModel.InviteCode,System.Nullable{AmbientServices.RecordGlobalId})\" /> (sharing checks on every template endpoint,\n            participation rights when combined with contact/password restrictions, etc.). Identity and audit fields on the invite are fixed by the server.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The <see cref=\"T:AmbientServices.InviteCodeId\" /> identifying the Invitation to be updated."
        },
        {
          "name": "body",
          "required": true,
          "type": "InviteCode",
          "partial": true,
          "description": "The <see cref=\"T:AmbientServices.Partial`1\" /> containing a partial <see cref=\"T:PicMeModel.InviteCode\" /> to be applied."
        }
      ],
      "return": {
        "type": "InviteCode",
        "description": "A <see cref=\"T:PicMeModel.InviteCode\" /> containing the updated invitation (including server-assigned fields)."
      }
    },
    {
      "name": "DeleteInvitation",
      "httpMethod": "DELETE",
      "httpPathRegex": "^/invitation/(?<inviteId>[^?/&]+)",
      "subPathPattern": "/invitation/{inviteId}",
      "summary": "Deletes the specified Invitation object.\n            Only the Invitation's creator can delete it.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The ID of the Invitation to delete."
        }
      ],
      "return": {
        "type": "DeleteInvitationResponse",
        "description": "A <see cref=\"T:PicMeApi.DeleteInvitationResponse\" />."
      }
    },
    {
      "name": "GetInviteCode",
      "httpMethod": "GET",
      "httpPathRegex": "^/invite/(?<inviteId>[^?/&]+)",
      "subPathPattern": "/invite/{inviteId}",
      "status": "deprecated",
      "notes": "This endpoint is deprecated. Use /invitation instead.",
      "summary": "Gets the specified Invitation object.\n            Any authenticated user can call this API, whether they're related to the Invitation or its owner or not.\n            However, for security reasons, the <see cref=\"P:PicMeModel.LinkActivator.RestrictToContacts\" /> field is only populated if the caller is the owner of the Invitation.\n            If the caller is not the owner, however, the <see cref=\"P:PicMeModel.LinkActivator.RestrictToContacts\" /> field is null if there are no restrictions, or an empty array if there are some restrictions.\n            Also, the <see cref=\"P:PicMeModel.LinkActivator.PasswordRequired\" /> field is masked to an empty string if there is a password.  \n            An empty string for the password required property (as opposed to null) indicates to the client that a password is required to activate, but doesn't reveal the password itself.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The ID of the Invitation to retrieve."
        }
      ],
      "return": {
        "type": "GetInviteCodeResponse",
        "description": "A <see cref=\"T:PicMeApi.GetInviteCodeResponse\" />."
      }
    },
    {
      "name": "PatchInviteCode",
      "httpMethod": "PATCH",
      "httpPathRegex": "^/invite/(?<inviteId>[^?/&]+)",
      "subPathPattern": "/invite/{inviteId}",
      "status": "deprecated",
      "notes": "This endpoint is deprecated. Use /invitation instead.",
      "summary": "Updates a Invitation object from the specified parameters.\n            Only the Invitation's creator can patch it.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The <see cref=\"T:AmbientServices.InviteCodeId\" /> identifying the Invitation to be updated."
        },
        {
          "name": "body",
          "required": true,
          "type": "PatchInviteCodeBody",
          "description": "The <see cref=\"T:PicMeModel.PatchInviteCodeBody\" /> containing the partial new collection data."
        }
      ],
      "return": {
        "type": "CreateInviteCodeResponse",
        "description": "A <see cref=\"T:PicMeModel.CreateInviteCodeResponse\" /> containing the ID of the new Invitation.  Note that if there is no existing LinkActivator, changes to RestrictToContacts, PasswordRequired, and Relationship will have no effect."
      }
    },
    {
      "name": "DeleteInviteCode",
      "httpMethod": "DELETE",
      "httpPathRegex": "^/invite/(?<inviteId>[^?/&]+)",
      "subPathPattern": "/invite/{inviteId}",
      "status": "deprecated",
      "notes": "This endpoint is deprecated. Use /invitation instead.",
      "summary": "Deletes the specified Invitation object.\n            Only the Invitation's creator can delete it.",
      "parameters": [
        {
          "name": "inviteId",
          "required": true,
          "type": "InviteCodeId",
          "description": "The ID of the Invitation to delete."
        }
      ],
      "return": {
        "type": "DeleteInviteCodeResponse",
        "description": "A <see cref=\"T:PicMeApi.DeleteInviteCodeResponse\" />."
      }
    },
    {
      "name": "CreateInvitation",
      "httpMethod": "POST",
      "httpPathRegex": "^/invitation",
      "subPathPattern": "/invitation",
      "summary": "Creates a Invitation object from the specified parameters.\n            Any authenticated user can create a Invitation, but the Invitation has to link something, and the caller must own whatever is being linked.",
      "description": "Client-supplied <see cref=\"P:PicMeModel.InviteCode.InviteCodeId\" />, <see cref=\"P:PicMeModel.InviteCode.InviteCodeGlobalId\" />, <see cref=\"P:PicMeModel.InviteCode.Created\" />,\n            <see cref=\"P:PicMeModel.InviteCode.CreatorUserId\" />, and <see cref=\"P:PicMeModel.InviteCode.Modified\" /> are ignored; the server assigns these.\n            For each <see cref=\"T:PicMeModel.LinkTemplate\" />, the caller must have sharing rights on every non-empty <see cref=\"P:PicMeModel.LinkTemplate.Primary\" /> or <see cref=\"P:PicMeModel.LinkTemplate.Secondary\" />\n            record (same as <see cref=\"M:PicMeApi.InvitationsApis.CreateInviteCode(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,PicMeApi.CreateInviteCodeBody,System.Nullable{AmbientServices.RecordGlobalId})\" />). When <see cref=\"P:PicMeModel.LinkActivator.RestrictToContacts\" /> or <see cref=\"P:PicMeModel.LinkActivator.PasswordRequired\" /> is set,\n            each participation-rights template has <see cref=\"F:AmbientServices.CollectionRights.ShareWithOthers\" /> stripped from its relationship, matching the single-link behavior of <see cref=\"M:PicMeApi.InvitationsApis.CreateInviteCode(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,PicMeApi.CreateInviteCodeBody,System.Nullable{AmbientServices.RecordGlobalId})\" />.\n            <para><strong>Collections:</strong> use multiple templates when guests need both metadata access and upload moderation.\n            A template with <see cref=\"P:AmbientServices.LinkRelationshipType.ParticipationRights\" /> from the activator (empty primary) to the collection grants access on the collection <em>record</em> (e.g. <see cref=\"F:AmbientServices.CollectionRights.Update\" /> to rename).\n            A template with <see cref=\"P:AmbientServices.LinkRelationshipType.ParticipationRights\" /> to the same collection grants guest participation (e.g. <see cref=\"F:AmbientServices.CollectionRights.Update\" /> and <see cref=\"F:AmbientServices.CollectionRights.Delete\" /> to edit or remove others' uploads).\n            </para><para><strong>User quota pooling:</strong> a template <see cref=\"P:AmbientServices.LinkRelationshipType.Hierarchy\" /> from the parent's <see cref=\"T:AmbientServices.RecordGlobalId\" /> (<see cref=\"P:PicMeModel.LinkTemplate.Primary\" />) to an empty <see cref=\"P:PicMeModel.LinkTemplate.Secondary\" />\n            makes the activator a Hierarchy child of that parent user; owned-collection storage and most download bandwidth are billed to the parent's quota billing root.\n            </para>",
      "parameters": [
        {
          "name": "body",
          "required": true,
          "type": "InviteCode",
          "description": "The <see cref=\"T:PicMeModel.InviteCode\" /> from the body of the request."
        },
        {
          "name": "linkParentRecord",
          "required": false,
          "type": "RecordGlobalId?",
          "description": "An optional <see cref=\"T:AmbientServices.RecordGlobalId\" /> to which the created Invitation will be linked as a child (with a <see cref=\"P:AmbientServices.LinkRelationshipType.Hierarchy\" /> link)."
        }
      ],
      "return": {
        "type": "CreateInviteCodeResponse",
        "description": "A <see cref=\"T:PicMeModel.CreateInviteCodeResponse\" /> containing the metadata for the new Invitation."
      }
    },
    {
      "name": "ListInvitations",
      "httpMethod": "GET",
      "httpPathRegex": "^/invitation",
      "subPathPattern": "/invitation",
      "summary": "Lists invitations associated with a specified entity (or owned by the authenticated user or target user if called by a root administrator).\n            The caller must be the owner of the Invitation or must own the contained entity.\n            With a <paramref name=\"linkRelationshipType\" /> of <see cref=\"P:AmbientServices.LinkRelationshipType.Hierarchy\" /> and a <paramref name=\"linkPrimaryGlobalId\" /> for a collection, this will list all the request/sharing invite codes associated with the collection, both request invite codes and sharing invite codes.\n            With a <paramref name=\"linkRelationshipType\" /> of <see cref=\"P:AmbientServices.AuthLinkRelationshipTypes.ReferralLinkType\" /> and a <paramref name=\"linkPrimaryGlobalId\" /> for a user, this will list all the referral invite codes used by the specified user to refer others.",
      "parameters": [
        {
          "name": "linkRelationshipType",
          "required": false,
          "type": "LinkRelationshipType?",
          "description": "An optional <see cref=\"T:AmbientServices.LinkRelationshipType\" /> indicating the type of link the invite codes are expected to be in (as the secondary entity in the link).  If <paramref name=\"linkPrimaryGlobalId\" /> is specified and this parameter is not, it will default to <see cref=\"P:AmbientServices.LinkRelationshipType.Hierarchy\" />."
        },
        {
          "name": "targetUserId",
          "required": false,
          "type": "UserId?",
          "description": "The <see cref=\"T:AmbientServices.UserId\" /> of a user other than the caller whose rights are desired.  Ignored except for site administrators.  Ignored if <paramref name=\"linkPrimaryGlobalId\" /> is specified."
        },
        {
          "name": "linkPrimaryGlobalId",
          "required": false,
          "type": "RecordGlobalId?",
          "description": "An optional <see cref=\"T:AmbientServices.RecordGlobalId\" /> that links to the desired invite codes as the primary entity in a link of the type specified by <paramref name=\"linkRelationshipType\" />."
        }
      ],
      "return": {
        "type": "InviteCode[]",
        "description": "A <see cref=\"T:PicMeModel.InviteCode\" />[] containing the invitations."
      }
    },
    {
      "name": "GetEntityPhoto",
      "httpMethod": "GET",
      "httpPathRegex": "^/e/photo",
      "subPathPattern": "/e/photo",
      "summary": "Gets information about the photo associated with the specified entity.",
      "parameters": [
        {
          "name": "entityGlobalId",
          "required": true,
          "type": "RecordGlobalId",
          "description": "The global record ID of the entity whose photo info is to be retrieved."
        }
      ],
      "return": {
        "type": "GetEntityPhotoResponse",
        "description": "A <see cref=\"T:PicMeApi.GetEntityPhotoResponse\" /> containing the requested data."
      }
    },
    {
      "name": "PutEntityPhoto",
      "httpMethod": "PUT",
      "httpPathRegex": "^/e/photo",
      "subPathPattern": "/e/photo",
      "summary": "Gets a URL that can be used to update an entity photo.",
      "parameters": [
        {
          "name": "entityGlobalId",
          "required": true,
          "type": "RecordGlobalId",
          "description": "The global record ID of the entity whose photo info is to be updated."
        },
        {
          "name": "fileExtension",
          "required": true,
          "type": "String",
          "description": "The file extension of the photo to be uploaded (if uploading)."
        },
        {
          "name": "contentType",
          "required": true,
          "type": "String",
          "description": "The MIME-type of the photo to be uploaded (if uploading)."
        }
      ],
      "return": {
        "type": "PutEntityPhotoResponse",
        "description": "A <see cref=\"T:PicMeApi.PutEntityPhotoResponse\" /> containing the requested data."
      }
    },
    {
      "name": "DeleteEntityPhoto",
      "httpMethod": "DELETE",
      "httpPathRegex": "^/e/photo",
      "subPathPattern": "/e/photo",
      "summary": "Deletes the cover picture for the specified invitation.",
      "parameters": [
        {
          "name": "entityGlobalId",
          "required": true,
          "type": "RecordGlobalId",
          "description": "The global record ID of the entity whose photo info is to be updated."
        }
      ],
      "return": {
        "type": "DeleteEntityPhotoResponse",
        "description": "A <see cref=\"T:PicMeApi.DeleteEntityPhotoResponse\" /> containing the response."
      }
    },
    {
      "name": "CreateInviteCode",
      "httpMethod": "POST",
      "httpPathRegex": "^/invite",
      "subPathPattern": "/invite",
      "status": "deprecated",
      "notes": "This endpoint is deprecated. Use /invitation instead.",
      "summary": "Creates a Invitation object from the specified parameters.\n            Any authenticated user can create a Invitation, but the Invitation has to link something, and the caller must own whatever is being linked.",
      "parameters": [
        {
          "name": "body",
          "required": true,
          "type": "CreateInviteCodeBody",
          "description": "The <see cref=\"T:PicMeApi.CreateInviteCodeBody\" /> from the body of the request."
        },
        {
          "name": "linkParentRecord",
          "required": false,
          "type": "RecordGlobalId?",
          "description": "An optional <see cref=\"T:AmbientServices.RecordGlobalId\" /> to which the created Invitation will be linked as a child (with a <see cref=\"P:AmbientServices.LinkRelationshipType.Hierarchy\" /> link)."
        }
      ],
      "return": {
        "type": "CreateInviteCodeResponse",
        "description": "A <see cref=\"T:PicMeModel.CreateInviteCodeResponse\" /> containing the metadata for the new Invitation."
      }
    },
    {
      "name": "ListInviteCodes",
      "httpMethod": "GET",
      "httpPathRegex": "^/invite",
      "subPathPattern": "/invite",
      "status": "deprecated",
      "notes": "This endpoint is deprecated. Use /invitation instead.",
      "summary": "Lists invite codes owned by the specified user (or the authenticated user), or associated with a specified entity.\n            The caller must be the owner of the Invitation or must own the contained entity.\n            With a <paramref name=\"linkRelationshipType\" /> of <see cref=\"P:AmbientServices.LinkRelationshipType.Hierarchy\" /> and a <paramref name=\"linkPrimaryGlobalId\" /> for a collection, this will list all the request/sharing invite codes associated with the collection, both request invite codes and sharing invite codes.\n            With a <paramref name=\"linkRelationshipType\" /> of <see cref=\"P:AmbientServices.AuthLinkRelationshipTypes.ReferralLinkType\" /> and a <paramref name=\"linkPrimaryGlobalId\" /> for a user, this will list all the referral invite codes used by the specified user to refer others.",
      "parameters": [
        {
          "name": "linkRelationshipType",
          "required": false,
          "type": "LinkRelationshipType?",
          "description": "An optional <see cref=\"T:AmbientServices.LinkRelationshipType\" /> indicating the type of link the invite codes are expected to be in (as the secondary entity in the link).  If <paramref name=\"linkPrimaryGlobalId\" /> is specified and this parameter is not, it will default to <see cref=\"P:AmbientServices.LinkRelationshipType.Hierarchy\" />."
        },
        {
          "name": "linkPrimaryGlobalId",
          "required": false,
          "type": "RecordGlobalId?",
          "description": "An optional <see cref=\"T:AmbientServices.RecordGlobalId\" /> that links to the desired invite codes as the primary entity in a link of the type specified by <paramref name=\"linkRelationshipType\" />."
        }
      ],
      "return": {
        "type": "ListInviteCodesResponse",
        "description": "A <see cref=\"T:PicMeApi.ListInviteCodesResponse\" /> containing the response."
      }
    }
  ],
  "types": [
    {
      "name": "InviteCodeId",
      "summary": "A struct that holds a Compact Invite Code ID.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "ActivateInvitationResponse",
      "summary": "A record containing the response for <see cref=\"M:PicMeApi.InvitationsApis.ActivateInvitation(AmbientServices.Database,AmbientServices.Auth,PicMeApi.AuthData,AmbientServices.InviteCodeId,System.String)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "clientInformation",
          "type": "String",
          "summary": "A client-controlled string containing any information not otherwise in the invitation that is needed by the client to render a good invite Code landing page and post-activation page."
        }
      ]
    },
    {
      "name": "ActivatedUserData",
      "summary": "A record containing information about a user who has activated an invitation.",
      "type": "composite",
      "members": [
        {
          "name": "userId",
          "type": "UserId",
          "summary": "The <see cref=\"P:PicMeApi.ActivatedUserData.UserId\" /> for the user."
        },
        {
          "name": "name",
          "type": "String",
          "summary": "The name of the user."
        }
      ]
    },
    {
      "name": "ActivateInviteCodeResponse",
      "summary": "A record containing the response for <see cref=\"M:PicMeApi.InvitationsApis.ActivateInviteCode(AmbientServices.Database,AmbientServices.Auth,PicMeApi.AuthData,AmbientServices.InviteCodeId,System.String)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "clientInformation",
          "type": "String",
          "summary": "A client-controlled string containing any information not otherwise in the invitation that is needed by the client to render a good invite Code landing page and post-activation page."
        }
      ]
    },
    {
      "name": "ListInvitationActivatedUsersResponse",
      "summary": "A record containing the response to <see cref=\"M:PicMeApi.InvitationsApis.ListInvitationActivatedUsers(AmbientServices.Database,AmbientServices.Auth,AmbientServices.IFileSystem,PicMeApi.AuthData,AmbientServices.InviteCodeId)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "users",
          "type": "ActivatedUserData[]",
          "summary": "An array of <see cref=\"T:PicMeApi.ActivatedUserData\" /> with basic information about another user who has activated the invitation."
        }
      ]
    },
    {
      "name": "InviteCode",
      "summary": "A InviteCode record is a child record of either a collection or user parent record and describes the properties of a Invite code.",
      "type": "composite",
      "members": [
        {
          "name": "inviteCodeId",
          "type": "InviteCodeId",
          "summary": "The ID of the Invite code."
        },
        {
          "name": "inviteCodeGlobalId",
          "type": "RecordGlobalId",
          "summary": "The <see cref=\"T:AmbientServices.RecordGlobalId\" /> for the Invite code."
        },
        {
          "name": "created",
          "type": "DateTime",
          "summary": "The UTC time when the link was created."
        },
        {
          "name": "creatorUserId",
          "type": "UserId",
          "summary": "The ID of the user that created the link."
        },
        {
          "name": "modified",
          "type": "DateTime",
          "summary": "The UTC time when the link was most recently modified."
        },
        {
          "name": "name",
          "type": "String",
          "summary": "The name of the Invite Code."
        },
        {
          "name": "clientInformation",
          "type": "String",
          "summary": "A client-controlled string containing any information not otherwise in the Invite code that is needed by the client to render a good Invite Code landing page and post-activation page."
        },
        {
          "name": "temporarilyDisabled",
          "type": "Boolean",
          "summary": "Whether or not the code should be temporarily disabled (allows the user to temporarily disable the code while retaining all the other properties)."
        },
        {
          "name": "start",
          "type": "DateTime?",
          "summary": "An optional <see cref=\"T:System.DateTime\" /> (in UTC) indicating when the Invite code should start working."
        },
        {
          "name": "end",
          "type": "DateTime?",
          "summary": "An optional <see cref=\"T:System.DateTime\" /> (in UTC) indicating when the Invite code should stop working."
        },
        {
          "name": "linkActivator",
          "type": "LinkActivator?",
          "summary": "An optional <see cref=\"P:PicMeModel.InviteCode.LinkActivator\" /> which contains templates for the <see cref=\"T:AmbientServices.Link\" />s that will be created when the Invite code is activated."
        },
        {
          "name": "message",
          "type": "String?",
          "summary": "The invitation message."
        },
        {
          "name": "restrictToOwner",
          "type": "Boolean",
          "summary": "Whether to restrict this invite code to owners only (no sharing allowed)."
        },
        {
          "name": "patchNormalized",
          "type": "InviteCode",
          "summary": "Normalizes the InviteCode by either returning this instance if it is already normalized, or creating a new instance with normalized properties."
        },
        {
          "name": "normalizeWithImplied",
          "type": "InviteCode",
          "summary": "Normalizes the InviteCode with privileges which are implied by other privileges or by the creation time."
        }
      ]
    },
    {
      "name": "LinkActivator",
      "summary": "A record containing information needed to activate one or more <see cref=\"T:AmbientServices.Link\" />s.\n            A <see cref=\"T:PicMeModel.LinkTemplate\" /> has all the information needed to decide if the link should be created and what information it should contain.",
      "type": "composite",
      "members": [
        {
          "name": "linkTemplates",
          "type": "LinkTemplate[]",
          "summary": "An array of <see cref=\"T:PicMeModel.LinkTemplate\" /> objects with missing data to be filled in with ambient data (typically the activating user's account id where primary or secondary is empty). Multiple templates are supported—for example, both <see cref=\"P:AmbientServices.LinkRelationshipType.ParticipationRights\" /> and <see cref=\"P:AmbientServices.LinkRelationshipType.ParticipationRights\" /> on the same collection."
        },
        {
          "name": "limit",
          "type": "UInt16",
          "summary": "An optional limit on the maximum number of users that will be allowed to activate the Invite code.  Defaults to zero (no limit)."
        },
        {
          "name": "restrictToContacts",
          "type": "String[]?",
          "summary": "An optional list of email addresses or phone numbers to restrict usage to.  When set, only user accounts with the specified contact information (email address or phone number) will be allowed to activate the invitation.  No guest activation will be allowed.  Entries should be in RFC 5322 format, which allows for a prefixed full name with the actual email address (or phone number in this case) in angle brackets.  This field is suppressed in non-owner reads."
        },
        {
          "name": "passwordRequired",
          "type": "String?",
          "summary": "An optional password that must be specified in order to activate the invitation.  When set, may be unspecified or null, or a non-empty string.  Setting to an empty string will cause an error.  When retrieved, null (or unspecified) indicates that no password is required.  Empty string indicates that the server has filtered a hidden password here that the UI needs to collect and give to the server in order to activate the invitiation."
        }
      ]
    },
    {
      "name": "LinkTemplate",
      "summary": "A record containing data about a <see cref=\"T:AmbientServices.Link\" /> to create.",
      "type": "composite",
      "members": [
        {
          "name": "relationshipType",
          "type": "LinkRelationshipType",
          "summary": "A <see cref=\"T:AmbientServices.LinkRelationshipType\" /> that separates this link from other types of links and correlates to a specific set of <see cref=\"T:AmbientServices.LinkRelationship\" />s that are valid for links of this relationshipType.\n            For collection invitations, <see cref=\"P:AmbientServices.LinkRelationshipType.ParticipationRights\" /> applies to guest actions on uploads in the collection (including others' uploads when flags include <see cref=\"F:AmbientServices.CollectionRights.Update\" /> / <see cref=\"F:AmbientServices.CollectionRights.Delete\" />),\n            while <see cref=\"P:AmbientServices.LinkRelationshipType.ParticipationRights\" /> applies to the collection entity itself (e.g. <see cref=\"F:AmbientServices.CollectionRights.Update\" /> where APIs check direct access rights on the collection record).\n            See the remarks on those <see cref=\"T:AmbientServices.LinkRelationshipType\" /> members for details."
        },
        {
          "name": "primary",
          "type": "RecordGlobalId",
          "summary": "A <see cref=\"T:AmbientServices.RecordGlobalId\" /> identifying the primary entity for the link, or <see cref=\"P:AmbientServices.RecordGlobalId.Empty\" /> to fill in the activating user as the primary in the link."
        },
        {
          "name": "secondary",
          "type": "RecordGlobalId",
          "summary": "A <see cref=\"T:AmbientServices.RecordGlobalId\" /> identifying the secondary entity for the link, or <see cref=\"P:AmbientServices.RecordGlobalId.Empty\" /> to fill in the activating user as the secondary in the link."
        },
        {
          "name": "relationship",
          "type": "LinkRelationship",
          "summary": "A <see cref=\"P:PicMeModel.LinkTemplate.Relationship\" /> indicating the nature of the relationship.  This string may contain multiple parts indicating various rights in one direction, the other direction, or both, but must not contain forward slashes.  The format and type of this property is determined by <see cref=\"P:PicMeModel.LinkTemplate.RelationshipType\" /> and should be documented with the type value used there."
        },
        {
          "name": "conflictResolution",
          "type": "LinkConflictResolution",
          "summary": "A <see cref=\"T:PicMeModel.LinkConflictResolution\" /> indicating what to do if there are already similar links."
        }
      ]
    },
    {
      "name": "LinkConflictResolution",
      "summary": "A multivalued enumeration that indicates how to resolve conflicts when creating a link from a <see cref=\"T:PicMeModel.LinkTemplate\" />.\n            The link's <see cref=\"P:PicMeModel.LinkTemplate.RelationshipType\" /> always has to match to count as a conflict.",
      "type": "enum",
      "flags": true,
      "enumValues": [
        {
          "name": "Default",
          "summary": "Default conflict resolution (allow similar links as long as they differ in any way).",
          "value": 0
        },
        {
          "name": "MergeRelationship",
          "summary": "If a similar link exists, the relationships should be merged using the default merge algorithm which assumes that the relationship is a multivalued enum, so values are merged using a bitwise OR operation.\n            Also implies that the primary and secondary must match to count as a conflict.",
          "value": 1
        },
        {
          "name": "ThrowException",
          "summary": "Throw an exception if a conflicting link already exists.",
          "value": 2
        },
        {
          "name": "PrimaryMatches",
          "summary": "The primary matching another link is required to count as a conflict.",
          "value": 4
        },
        {
          "name": "SecondaryMatches",
          "summary": "The secondary matching another link is required to count as a conflict.",
          "value": 8
        },
        {
          "name": "MergeRelationshipWithConcat",
          "summary": "If a similar link exists, the relationships should be merged assuming that the relationship is an undelimited string enum.",
          "value": 257
        },
        {
          "name": "ConcatWithComma",
          "summary": "Must be used with <see cref=\"F:PicMeModel.LinkConflictResolution.MergeRelationshipWithConcat\" />, indicates that rather than an undelimited string, the string is comma-delimited.",
          "value": 512
        },
        {
          "name": "ConcatWithSemicolon",
          "summary": "Must be used with <see cref=\"F:PicMeModel.LinkConflictResolution.MergeRelationshipWithConcat\" />, indicates that rather than an undelimited string, the string is semicolon-delimited.",
          "value": 1024
        }
      ]
    },
    {
      "name": "LinkRelationship",
      "summary": "A record struct that holds a link type string.\n            Link type strings can contain anything except for slash characters.\n            Link types can be easily converted to or from any enum type using <see cref=\"M:AmbientServices.LinkRelationship.FromEnum``1(``0)\" /> and <see cref=\"M:AmbientServices.LinkRelationship.ToEnum``1\" />.",
      "type": "proxy",
      "representedBy": "String",
      "enumValues": [
        {
          "name": "Default",
          "summary": "Gets the default relationship.",
          "value": ""
        }
      ]
    },
    {
      "name": "DeleteInvitationResponse",
      "summary": "A record containing the response for <see cref=\"M:PicMeApi.InvitationsApis.DeleteInvitation(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.InviteCodeId)\" />."
    },
    {
      "name": "GetInviteCodeResponse",
      "summary": "A record containing the response for <see cref=\"M:PicMeApi.InvitationsApis.GetInviteCode(AmbientServices.Auth,AmbientServices.Database,AmbientServices.InviteCodeId,PicMeApi.AuthData)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "inviteCode",
          "type": "InviteCode",
          "summary": "A <see cref=\"P:PicMeApi.GetInviteCodeResponse.InviteCode\" /> object containing the invitation data."
        }
      ]
    },
    {
      "name": "PatchInviteCodeBody",
      "summary": "A record containing the body of a request to patch an invite code.",
      "type": "composite",
      "members": [
        {
          "name": "name",
          "type": "String?",
          "summary": "The new name for the invite code (if any)."
        },
        {
          "name": "relationshipType",
          "type": "LinkRelationshipType?",
          "summary": "A <see cref=\"T:AmbientServices.LinkRelationshipType\" /> uniquely identifying the type of link to create when the invite code is activated."
        },
        {
          "name": "relationship",
          "type": "LinkRelationship?",
          "summary": "A <see cref=\"T:AmbientServices.LinkRelationship\" /> representing the type of relationship between the primary and secondary records."
        },
        {
          "name": "limit",
          "type": "Int16?",
          "summary": "An optional limit on the number of users that can use the invite code."
        },
        {
          "name": "clientInformation",
          "type": "String?",
          "summary": "A client-controlled string containing any information not otherwise in the invite code that is needed by the client to render a good invite code landing page and post-activation page."
        },
        {
          "name": "primaryGlobalId",
          "type": "RecordGlobalId?",
          "summary": "The primary record for the link, or an empty string to be replaced with the activating user's ID."
        },
        {
          "name": "secondaryGlobalId",
          "type": "RecordGlobalId?",
          "summary": "The secondary record for the link, or an empty string to be replaced with the activating user's ID."
        },
        {
          "name": "temporarilyDisabled",
          "type": "Boolean?",
          "summary": "Whether or not the invite code should be temporarily disabled."
        },
        {
          "name": "start",
          "type": "DateTime?",
          "summary": "An optional time to enable the invite code."
        },
        {
          "name": "end",
          "type": "DateTime?",
          "summary": "An optional time to disable the invite code."
        },
        {
          "name": "conflictResolution",
          "type": "LinkConflictResolution?",
          "summary": "A <see cref=\"T:PicMeModel.LinkConflictResolution\" /> indicating how conflicts should be detected and handled."
        },
        {
          "name": "message",
          "type": "String?",
          "summary": "A string containing a message to display to recipients of the invitation."
        },
        {
          "name": "restrictToContacts",
          "type": "String[]?",
          "summary": "An optional list of email addresses or phone numbers to restrict usage to.  When set, only user accounts with the specified contact information (email address or phone number) will be allowed to activate the invitation.  No guest activation will be allowed.  Entries should be in RFC 5322 format, which allows for a prefixed full name with the actual email address (or phone number in this case) in angle brackets.  This field is suppressed in non-owner reads."
        },
        {
          "name": "passwordRequired",
          "type": "String?",
          "summary": "An optional password, which will be required from the activator to activate the invitation.  Null or unspecified if not used.  Must not be empty string because that has a special meaning on retrieval."
        }
      ]
    },
    {
      "name": "CreateInviteCodeResponse",
      "summary": "A record containing the response to Invite generating functions.",
      "type": "composite",
      "members": [
        {
          "name": "inviteCode",
          "type": "InviteCode",
          "summary": "The <see cref=\"P:PicMeModel.CreateInviteCodeResponse.InviteCode\" /> for the newly-created Invite code."
        }
      ]
    },
    {
      "name": "DeleteInviteCodeResponse",
      "summary": "A record containing the response for <see cref=\"M:PicMeApi.InvitationsApis.DeleteInviteCode(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.InviteCodeId)\" />."
    },
    {
      "name": "RecordGlobalId",
      "summary": "A structured replacement for <see cref=\"T:AmbientServices.RecordIdentifier\" /> that contains the same data, a type-qualified and parent-qualified global identifier for a database record.\n            Records may be children of other records, and this identifier contains the path to the parent in addition to the path to the child record.\n            An example of a record that is a child of another record is an upload within a collection.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "LinkRelationshipType",
      "summary": "A record that holds a link relationship type string.\n            Link type strings can contain anything except for slash characters.",
      "type": "proxy",
      "representedBy": "String",
      "enumValues": [
        {
          "name": "Ownership",
          "summary": "Gets the <see cref=\"T:AmbientServices.LinkRelationshipType\" /> for an ownership relationship.\n            This link type indicates that the primary entity owns (or co-owns) the secondary entity.\n            The <see cref=\"T:AmbientServices.LinkRelationship\" /> for this link type is a value obtained from <see cref=\"M:AmbientServices.LinkRelationship.FromEnum``1(``0)\" /> where the <see cref=\"P:AmbientServices.LinkRelationshipType.Ownership\" /> enumeration is the value.",
          "value": "o"
        },
        {
          "name": "Rights",
          "summary": "Gets the <see cref=\"T:AmbientServices.LinkRelationshipType\" /> for a rights relationship indicating what rights the primary entity has on the <strong>secondary entity record itself</strong> (the metadata object), not on nested or associated content.\n            The <see cref=\"T:AmbientServices.LinkRelationship\" /> for this link type is a value obtained from <see cref=\"M:AmbientServices.LinkRelationship.FromEnum``1(``0)\" /> where the <see cref=\"T:AmbientServices.Rights\" /> enumeration is the value.",
          "value": "?"
        },
        {
          "name": "ParticipationRights",
          "summary": "Gets the <see cref=\"T:AmbientServices.LinkRelationshipType\" /> for a collection rights relationship: rights the primary entity has on a collection and the related objects.\n            The <see cref=\"T:AmbientServices.LinkRelationship\" /> for this link type is a value obtained from <see cref=\"M:AmbientServices.LinkRelationship.FromEnum``1(``0)\" /> where the <see cref=\"T:AmbientServices.CollectionRights\" /> enumeration is the value.",
          "description": "For a <c>Collection</c> as secondary, this governs participation in the collection as a guest: \n            listing (<see cref=\"F:AmbientServices.CollectionRights.List\" />), reading others' uploads (<see cref=\"F:AmbientServices.CollectionRights.Read\" />), creating uploads (<see cref=\"F:AmbientServices.CollectionRights.Create\" />), updating upload names (<see cref=\"F:AmbientServices.CollectionRights.Update\" />), and deleting uploads (<see cref=\"F:AmbientServices.CollectionRights.Delete\" />) when the API checks participation rights on the collection.\n            Extended flags support rights on the collection itself and on subcollections.",
          "value": "\u00BF"
        },
        {
          "name": "Hierarchy",
          "summary": "Gets the <see cref=\"T:AmbientServices.LinkRelationshipType\" /> for a hierarchical relationship, for example folders within folders.\n            The entity types don't necessarily have to be the same.  The hierarchy could indicate collections or other objects under a user.\n            The <see cref=\"T:AmbientServices.LinkRelationship\" /> for this link type is currently undefined.  Any relationship indicates that the secondary object is a child of the parent object.",
          "value": "i,\u2534"
        },
        {
          "name": "Map",
          "summary": "Gets the <see cref=\"T:AmbientServices.LinkRelationshipType\" /> for a mapping relationship, for example mapping an external identifier to a local object.\n            The <see cref=\"T:AmbientServices.LinkRelationship\" /> for this link type is currently undefined.  Any relationship indicates that the secondary object is the object identified by the external identifier.",
          "value": "\u22B6"
        }
      ]
    },
    {
      "name": "UserId",
      "summary": "A struct that holds a user identifier.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "GetEntityPhotoResponse",
      "summary": "A record containing the response for <see cref=\"M:PicMeApi.InvitationsApis.GetEntityPhoto(AmbientServices.Auth,AmbientServices.Database,AmbientServices.IFileSystem,AmbientServices.AutoRotatingEncryptionKeyManager,AmbientServices.RecordGlobalId)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "version",
          "type": "String",
          "summary": "A string indicating the version of the photo."
        },
        {
          "name": "getProfilePictureLocation",
          "type": "String",
          "summary": "A string containing a URL that may temporariliy be used to GET the entity photo."
        }
      ]
    },
    {
      "name": "PutEntityPhotoResponse",
      "summary": "A record containing the response for <see cref=\"M:PicMeApi.InvitationsApis.GetEntityPhoto(AmbientServices.Auth,AmbientServices.Database,AmbientServices.IFileSystem,AmbientServices.AutoRotatingEncryptionKeyManager,AmbientServices.RecordGlobalId)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "version",
          "type": "String",
          "summary": "A string indicating the version of the photo."
        },
        {
          "name": "putProfilePictureLocation",
          "type": "String",
          "summary": "A string containing a URL that may temporariliy be used to PUT the entity photo."
        }
      ]
    },
    {
      "name": "DeleteEntityPhotoResponse",
      "summary": "A record containing the response for <see cref=\"M:PicMeApi.InvitationsApis.GetEntityPhoto(AmbientServices.Auth,AmbientServices.Database,AmbientServices.IFileSystem,AmbientServices.AutoRotatingEncryptionKeyManager,AmbientServices.RecordGlobalId)\" />."
    },
    {
      "name": "CreateInviteCodeBody",
      "summary": "A record containing the body of a request to create an invitation.",
      "type": "composite",
      "members": [
        {
          "name": "name",
          "type": "String",
          "summary": "The name for the invitation."
        },
        {
          "name": "relationshipType",
          "type": "LinkRelationshipType",
          "summary": "A <see cref=\"T:AmbientServices.LinkRelationshipType\" /> uniquely identifying the type of link to create when the invitation is activated."
        },
        {
          "name": "relationship",
          "type": "LinkRelationship",
          "summary": "A <see cref=\"T:AmbientServices.LinkRelationship\" /> representing the type of relationship between the primary and secondary records."
        },
        {
          "name": "limit",
          "type": "Int16",
          "summary": "An optional limit on the number of users that can use the invitation."
        },
        {
          "name": "clientInformation",
          "type": "String",
          "summary": "A client-controlled string containing any information not otherwise in the invitation that is needed by the client to render a good invitation landing page and post-activation page."
        },
        {
          "name": "primaryGlobalId",
          "type": "RecordGlobalId",
          "summary": "The primary record for the link, or an empty string to be replaced with the activating user's ID."
        },
        {
          "name": "secondaryGlobalId",
          "type": "RecordGlobalId",
          "summary": "The secondary record for the link, or an empty string to be replaced with the activating user's ID."
        },
        {
          "name": "temporarilyDisabled",
          "type": "Boolean",
          "summary": "Whether or not the invitation should be temporarily disabled."
        },
        {
          "name": "start",
          "type": "DateTime?",
          "summary": "An optional time to enable the invitation."
        },
        {
          "name": "end",
          "type": "DateTime?",
          "summary": "An optional time to disable the invitation."
        },
        {
          "name": "conflictResolution",
          "type": "LinkConflictResolution",
          "summary": "A <see cref=\"T:PicMeModel.LinkConflictResolution\" /> indicating how conflicts should be detected and handled."
        },
        {
          "name": "message",
          "type": "String?",
          "summary": "A string containing a message to display to recipients of the invitation."
        },
        {
          "name": "restrictToContacts",
          "type": "String[]?",
          "summary": "An optional list of email addresses or phone numbers to restrict usage to.  When set, only user accounts with the specified contact information (email address or phone number) will be allowed to activate the invitation.  No guest activation will be allowed.  Entries should be in RFC 5322 format, which allows for a prefixed full name with the actual email address (or phone number in this case) in angle brackets.  This field is suppressed in non-owner reads."
        },
        {
          "name": "passwordRequired",
          "type": "String?",
          "summary": "An optional password, which will be required from the activator to activate the invitation.  Null or unspecified if not used.  Must not be empty string because that has a special meaning on retrieval."
        }
      ]
    },
    {
      "name": "ListInviteCodesResponse",
      "summary": "A list of <see cref=\"T:PicMeModel.InviteCode\" /> in response to <see cref=\"M:PicMeApi.InvitationsApis.ListInviteCodes(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,System.Nullable{AmbientServices.LinkRelationshipType},System.Nullable{AmbientServices.RecordGlobalId})\" />.",
      "type": "composite",
      "members": [
        {
          "name": "inviteCodes",
          "type": "InviteCode[]",
          "summary": "An arry of <see cref=\"T:PicMeModel.InviteCode\" /> records."
        }
      ]
    }
  ]
}