Introduction

GenTaR is designed to coordinate the production of transgenic mice between high-throughput mouse production facilities and consortia of clinicians and human geneticists while minimizing the overlap and maximizing efficiencies. GenTaR captures the intention of a consortium to produce mutant mice targeting a particular gene, and the progress of mouse production. It records information about the mutation created, and tracks the state of phenotyping performed on the mutant mouse line.

This is a secure resource that can house various types of mutations linked to genes, and will provide different data access policies to users.

This guide is aimed at developers of such applications.

1. Usage of HTTP Verbs

The following table describes how the GenTaR API interprets the HTTP verbs.

Table 1. HTTP Verbs
HTTP Verb Usage

GET

GET is used to retrieve information without changing the state of the system.

POST

POST is used to submit an entity to the specified resource, often causing a change in state or side effects on the system.

PUT

PUT method replaces all current representations of the target resource with the request payload.

Other verbs, such as DELETE, are not supported by GenTaR at present.

2. Pagination and Sorting

Most of the endpoints returning collections are paginated and can be sorted. If no parameters are specified, then the default ones are applied.

2.1. Pagination

The parameters to specify the pagination are:

Parameter

Description

page

Number of the page to retrieve. It starts with 0 (which is the default value).

size

Number of elements to retrieve.

2.2. Sorting

The parameters to specify the sorting are:

Parameter

Description

sort

Column and direction to sort, separated by comma. The directions are ASC or DESC. Example: sort=tpn,ASC

For example, to get the first 15 projects in the system, ordered by tpn, the call to the enpoint would be:

api/projects?page=0&size=15&sort=tpn,ASC

3. Authentication

After a user is registered in the system (see: Create a user), they can start working with GenTaR.

The first step begins with logging into GenTaR using the /auth/signin endpoint. The user issues a POST request to the endpoint and supplies the username and the password credentials specified at registration as the JSON request payload (see the Login Data Structure example below). A JSON Web Token (see https://jwt.io) is returned if the login is successful.

In all subsequent interactions with GenTaR the user provides the access token to authenticate each request to a protected route or resource. The tokens are signed by the server so the server can validate the signature of the token to grant the access to resources. The access token is a Base64 encoded String, that should be included as an Authorization HTTP header like this:

Authorization: Bearer eyJhbGciOiJSUzI1NiJIUzI1NiJ9.eyJpc3MiOiJjb2RlcmFkYXIiLCJleHAiOjE0ODQ1MTUzOTUsInR5cGUiOiJSRUZSRVNIIiwiaWF0IjoxNDg0NTE1NDU1LCJ1c2VySWQiOiIxIiwidXNlcm5hbWUiOiJyYWRhciJ9.zfkyc5jkPiAUEt7nU25SJxKprcPiXaiq0Q6bCJ_RrQo

The access token is short-lived and by default expires after 30 minutes.

A typical work flow follows this pattern:

  1. Client logs in with username and password to obtain a token

  2. Client interacts with resources in GenTaR by providing the access token in each request

  3. After 30 minutes client gets a 401-Response

  4. Clients logs in again and retrieves a new token to continue working with the system

See more:

3.1. POST

3.1.1. Successful authentication

Login Data Structure
Path Type Description

userName

String

The user name.

password

String

The password.

Example Request
POST /auth/signin HTTP/1.1
Content-Type: application/json
Content-Length: 85
Host: localhost:8080

{
  "userName" : "gentar_test_user1@gentar.org",
  "password" : "gentar_test_user1"
}
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 806

{
  "userName" : "gentar_test_user1@gentar.org",
  "accessToken" : "eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IjdnY3RwZHl4elgwSVlsQ1ZpbFBQTVEiLCJpYXQiOjE2Mjg3NzcxMjQsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkyNH0.ZSFk_z7sUNpZzbWZVVGOEX1A5v34u_7vfbP0lbFC4NSPj6e7D0HANGeD47amRrAqgviKl-fsm97LZ5HKuqoSAXJel1Q2_JpRKyGry7PP_OfvR28W5J5NWL64bgGLpZ9Ci9dTVFZ6whNKTVSFC1wSbtzALdYoL1a7CWnZceABapiqKaLHs0ll4_P4Rb-JhPCirNBwtrGQhfHzGa-U5fRgCC-j0eRJWQ-q-LkVFc5rz15R9mWbARdtpZN358IfORDzMq521JfuiQWM8oRYtWqaKaSK66tpQnbAMsOtCxc5TJlxBYxdrKcNEXpG3cx2KsxsNFDOdVFITdzYbROtOEe2DQ"
}
Response Structure
Path Type Description

userName

String

User name in the system (usually the email).

accessToken

String

The token to access the protected end points.

3.1.2. Error in authentication: user/password is incorrect

When trying to sign in with an incorrect user or password the system will return an error message.

request
POST /auth/signin HTTP/1.1
Content-Type: application/json
Content-Length: 77
Host: localhost:8080

{
  "userName" : "not-existing-user-auth-system",
  "password" : "password"
}
response
HTTP/1.1 401 Unauthorized
Content-Type: application/json
Content-Length: 208

{
  "apierror" : {
    "status" : "UNAUTHORIZED",
    "timestamp" : "12-08-2021 02:05:24",
    "message" : "Invalid userName/password provided.",
    "debugMessage" : "Please provide valid credentials."
  }
}

4. Users

This section describes the REST endpoints to manage users in the system.

4.1. Fields

These are the fields you are going to see in the body of a request in a GET or in the payload for POST or PUT operations.

Path Type Description

name

String

User name in the system.

email

String

User email

contactable

Boolean

Whether or not the user can be contacted through their email.

rolesWorkUnits[]

Array

Information about the work units that the user is associated with, along with the role the user has in each work unit.

rolesWorkUnits[].id

Number

Internal id of the record in the system.

rolesWorkUnits[].workUnitName

String

Name of the work unit.

rolesWorkUnits[].roleName

String

Name of the role.

rolesConsortia[]

Array

Information about the consortia that the user is associated with, along with the role the user has in each consortium.

rolesConsortia[].id

Number

Internal id of the record in the system.

rolesConsortia[].consortiumName

String

Name of the consortium.

rolesConsortia[].roleName

String

Name of the role.

isAdmin

Boolean

Whether or not the user is admin.

actionPermissions[]

Array

Information about the general permissions the user has.

actionPermissions[].actionName

String

Action name.

actionPermissions[].value

Boolean

True if the user has permission. False otherwise.

4.2. GET

4.2.1. Get Current Logged Person

Get the current user information. The current user is the owner of the token used in the request.

Example Request

Curl:

$ curl 'http://localhost:8080/api/people/currentPerson' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6Ik9RbWwxblNKRmEyR19sRElxZDVTcXciLCJpYXQiOjE2Mjg3NzcwOTEsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4Nzg5MX0.hx9osqIOolCPao5iVNN0cGzP4YeOIvxS7u1R_izuXPGw70xnrR7fVeLoAtemxQjJzq5Sd0sAEivKH72c5BICDHvmORL8BF2UuoD8mAgw_HsX0GcGaKG8KXXQHvPQzkgiLjnVOiXiJ7V6kAMfiT3ZAe1ZjVLQqAPtE8l3aMYQKyX67ZM3MvHs4SL0drPcvg3-y6X26360mdZVoIorM9TqeyZNO5TJEAabSTox5G7MqCmi5uHg5FIGHgGgZTtPW4NPdfZthVrKBGUkDP3rNtNJbNCjTDYxXZ80oqhZbIfMAun_v5juHqLeg2RbtFoYpR20RerJIx5ksRfrhb7KLPbBWQ'
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 551

{
  "name" : "Test user name",
  "email" : "gentar_test_user1@gentar.org",
  "contactable" : true,
  "rolesWorkUnits" : [ {
    "id" : 1,
    "workUnitName" : "UCD",
    "roleName" : "general"
  } ],
  "rolesConsortia" : [ {
    "id" : 1,
    "consortiumName" : "BaSH",
    "roleName" : "general"
  } ],
  "actionPermissions" : [ {
    "actionName" : "manageUsers",
    "value" : false
  }, {
    "actionName" : "executeManagerTasks",
    "value" : false
  }, {
    "actionName" : "canManageGeneLists",
    "value" : false
  } ],
  "isAdmin" : false
}

4.3. POST

4.3.1. Create a user

To create a user in the system specify the user in a JSON document that sent to the following endpoint.

Example Request

Curl:

$ curl 'http://localhost:8080/api/people' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IkYycVRJU3MtanNUN1g1eXE0OVBMTGciLCJpYXQiOjE2Mjg3NzcwODksInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4Nzg4OX0.j2LSc115g3snxYSb1b2rRCeNaqimsQ4EwrLwyJAuYwASgN-VWH8lHkM8k1BUJ3ITe6TnLjQCe_npModdqwwJVqQ3B3i5cu3pyOWeFnOIZyIv1QqBE3zADHFaL_MShdW1HaQUn5QuF_g7NeaYVq08ub_kAEaak5OP1YN2IE8Bl5xL8LN_LmAiY8Oux3FY6wGKaYDWnyUFLhPJIHo6LJ8dz6RmFu5tHn0EWfKe4sb_t91dpUgMk_RMTyu97dFPyo-W0E6Qm4-L5gDGhsAPGvSZORbt-S2F4zLbfjIs2xQ5rVAY5cGobjaB6EoKq5M2MP-wWiCvOgUEFDY0qHGhZDCo_A' \
    -d '{
  "name" : "New User",
  "email" : "newuser@ebi.ac.uk",
  "password" : "newuser",
  "contactable" : true,
  "rolesWorkUnits" : [ {
    "workUnitName" : "UCD",
    "roleName" : "general"
  } ],
  "rolesConsortia" : [ {
    "consortiumName" : "CMG",
    "roleName" : "general"
  } ]
}'
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 533

{
  "name" : "New User",
  "email" : "newuser@ebi.ac.uk",
  "contactable" : true,
  "rolesWorkUnits" : [ {
    "id" : 4,
    "workUnitName" : "UCD",
    "roleName" : "general"
  } ],
  "rolesConsortia" : [ {
    "id" : 3,
    "consortiumName" : "CMG",
    "roleName" : "general"
  } ],
  "actionPermissions" : [ {
    "actionName" : "manageUsers",
    "value" : false
  }, {
    "actionName" : "executeManagerTasks",
    "value" : false
  }, {
    "actionName" : "canManageGeneLists",
    "value" : false
  } ],
  "isAdmin" : false
}

4.3.2. Request password reset

An example of how to request a password reset for a specific user is shown below. When this endpoint is used, the user will receive an email with a link and a secret pin. By following the link and using the secret pin the user can set a new password.

Example Request

Curl:

$ curl 'http://localhost:8080/api/people/requestPasswordReset' -i -X POST \
    -H 'Content-Type: application/json' \
    -d 'gentar_test_user1@gentar.org'
Example Response
HTTP/1.1 200 OK

4.4. PUT

4.4.1. Update a managed user

This endpoint allows a manager to update some information for a user that is managed by them.

Example Request

Curl:

$ curl 'http://localhost:8080/api/people/gentar_test_user2@gentar.org' -i -X PUT \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IjlXSWpjOXZPSk8wSXNhUl9ScldZWVEiLCJpYXQiOjE2Mjg3NzcwOTIsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4Nzg5Mn0.f1NbGGbXs9a24pqE85AjVKPNzaz9Pf2K_sfERJ04GWH-aGTPpnA8YPS1qpM-tvODK2_LTUXf8-C-rwQ-iyJr-a-ja-9G3omjRmo4HcAeTCl2eoIXSP35HUxViXJ9Ejwh7wIfa_6Z53ORtDF94yu_Z5FZikYnpK0KQzpN6seudPN2yJQ_19h_zmvs85h7ceYcbrgh5G4VC2YyHCkav5SY9e6B-KPv9-rZTWh97-yOGXE3bgh5KnUEqAxtCVcu4AaxQl7VR4zSfEQp1asBoISjh9UtvAbDURnGe0IWYXf9CVOfofZBpER9DioZ21VV05DhH7qLiBAafFj5wC1q1VOu2A' \
    -d '{
  "name" : "Test user 2 name [edited]",
  "contactable" : false,
  "rolesWorkUnits" : [ {
    "id" : 2,
    "workUnitName" : "UCD",
    "roleName" : "general"
  } ],
  "rolesConsortia" : [ {
    "consortiumName" : "CMG",
    "roleName" : "general"
  } ]
}'
Example Response
HTTP/1.1 200 OK
Content-Disposition: inline;filename=f.txt
Content-Type: application/json
Content-Length: 562

{
  "name" : "Test user 2 name [edited]",
  "email" : "gentar_test_user2@gentar.org",
  "contactable" : false,
  "rolesWorkUnits" : [ {
    "id" : 2,
    "workUnitName" : "UCD",
    "roleName" : "general"
  } ],
  "rolesConsortia" : [ {
    "id" : 4,
    "consortiumName" : "CMG",
    "roleName" : "general"
  } ],
  "actionPermissions" : [ {
    "actionName" : "manageUsers",
    "value" : false
  }, {
    "actionName" : "executeManagerTasks",
    "value" : false
  }, {
    "actionName" : "canManageGeneLists",
    "value" : false
  } ],
  "isAdmin" : false
}

4.4.2. Update own user

This endpoint allows a user that is currently logged in the system to modify data like the name, password of whether they are contactable or not.

If a user wants to update their password, it’s necessary to provide the current password ('currentPassword' field) and the new password ('newPassword' field). Otherwise, the fields can be null or simply be omitted in the request.

Example Request

Curl:

$ curl 'http://localhost:8080/api/people' -i -X PUT \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IlExUmR3ZkVFbXZRUjZCcGVVTHNQaFEiLCJpYXQiOjE2Mjg3NzcwOTEsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4Nzg5MX0.Pfvxx4gdUpFU_QjmwapUMl5RdjqWOxEjEHukBbPw2tEc9gCAST_xfEmDkIqhthobj4uFO8ogPEqcRvAda7OAdUVZ7YaNA-esL82AgUORAZP4syTeaa3naSy5PxtmQu4VXPN23kq2CKde1ZbuvSyJu2l1cbgttqMh2piZYA64DBPF1_C3x--vPtJq0aQ0IJj30Cn8oKDri_lD7ncV5M2CLUfsy7YsDDYJydRnU_cwHs8FEAaGxkGD3GqoL-2mKGw_5YT97bz7PRU4Bn8W8BegOVIMGvhxUNrd0YqANTqzYDCsVjCPVEhND-deye673bE0z576hc3lROkxqcn6UZCsmw' \
    -d '{
  "name" : "Test user 1 name [edited]",
  "contactable" : true,
  "currentPassword" : "gentar_test_user1",
  "newPassword" : "gentar_test_user1_new"
}'
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 558

{
  "name" : "Test user 1 name [edited]",
  "email" : "gentar_test_user1@gentar.org",
  "contactable" : true,
  "rolesWorkUnits" : [ {
    "id" : 1,
    "workUnitName" : "UCD",
    "roleName" : "general"
  } ],
  "rolesConsortia" : [ {
    "id" : 1,
    "consortiumName" : "BaSH",
    "roleName" : "general"
  } ],
  "actionPermissions" : [ {
    "actionName" : "manageUsers",
    "value" : true
  }, {
    "actionName" : "executeManagerTasks",
    "value" : true
  }, {
    "actionName" : "canManageGeneLists",
    "value" : true
  } ],
  "isAdmin" : true
}

5. Projects

This section describes the REST endpoints for projects in the system.

A project in GenTaR is a top level object. It specifies an intention, and it is associated with one or more plans that contain information about production attempts, or the state of phenotyping.

5.1. Fields

These are the fields you are going to see in the body of a request in a GET or in the payload for POST or PUT operations.

Path Type Description

tpn

String

Public identifier for the project. Not editable, just for reference in the payload.

recovery

Boolean

[WIP]

esCellQcOnly

Boolean

Indicates if the project is only used for ES Cell QC

comment

String

Comment on this project.

privacyName

String

Privacy level for the project (public, protected or restricted).

projectIntentions

Array

Intentions for the project.

projectIntentions[].molecularMutationTypeName

String

Name of the molecular mutation.

projectIntentions[].mutationCategorizations

Array

Mutation categorizations linked to the project intention.

projectIntentions[].mutationCategorizations[].name

String

Name of type of the mutation categorization.

projectIntentions[].mutationCategorizations[].description

Null

Description of the mutation categorization.

projectIntentions[].mutationCategorizations[].typeName

String

Name of type of the mutation categorization.Possible values allele_category or repair_mechanism.

projectIntentions[].intentionByGene

Object

Gene in the intention.

projectIntentions[].intentionByGene.gene

Object

Gene information.

projectIntentions[].intentionByGene.gene.id

Number

Internal id of the gene in GenTaR.

projectIntentions[].intentionByGene.gene.name

String

Name of the gene.

projectIntentions[].intentionByGene.gene.symbol

String

Symbol of the gene.

projectIntentions[].intentionByGene.gene.externalLink

String

External link for the gene.

projectIntentions[].intentionByGene.gene.accessionId

String

Accession id for the gene, e.g MGI.

projectIntentions[].intentionByGene.gene.speciesName

String

Species associated with the gene.

projectIntentions[].intentionsBySequences

Array

Sequences in the intention.

projectIntentions[].intentionsBySequences[].index

Number

Index of the sequence

projectIntentions[].intentionsBySequences[].sequence

Object

Sequence information.

projectIntentions[].intentionsBySequences[].sequence.id

Number

Internal record id.

projectIntentions[].intentionsBySequences[].sequence.sequence

String

Sequence value.

projectIntentions[].intentionsBySequences[].sequence.typeName

String

Type of the sequence. Currently "complete,partial", "5_prime_end" or "3_prime_end"

projectIntentions[].intentionsBySequences[].sequence.categoryName

String

Type of the sequence. Currently "intention target sequence", "original starting sequence" or "outcome sequence" (the last one only valid for outcomes).

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations

Array

Information about the locations and their order in the sequence.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].id

Number

Internal record id.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].locationIndex

Number

Index of the location (order).

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location

Object

Location information.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.id

Number

Internal record id.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.chr

String

Chromosome of the location.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.start

Number

Start position.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.stop

Number

Stop position.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.strand

String

Strand of the location.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.genomeBuild

String

Genome build used as reference.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.speciesName

String

Name of the species.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.strainName

String

Name of the strain.

projectIntentions[].intentionByGene.bestOrthologs[]

Array

A list of best orthologs for the gene (Support count > 4).

projectIntentions[].intentionByGene.allOrthologs[]

Array

A list of all orthologs for the gene.

projectIntentions[].intentionByGene.bestOrthologs[].symbol

String

Human gene symbol representing the predicted ortholog of the mouse gene.

projectIntentions[].intentionByGene.bestOrthologs[].category

String

Category assigned to the ortholog. Possible values: LOW, MODERATE and GOOD according to the support count. The LOW category indicates the ortholog prediction has a support count of less than 5. The MODERATE category indicates the prediction has a support count of between 5 and 8, and the GOOD category indicates the support count is between 9 and 12

projectIntentions[].intentionByGene.bestOrthologs[].support

String

Services that predict this human gene to the ortholog of the mouse gene.

projectIntentions[].intentionByGene.bestOrthologs[].supportCount

Number

Counter of how many services support this ortholog designation.

projectIntentions[].intentionByGene.bestOrthologs[].link

String

URL of the HGNC entry for this gene.

projectIntentions[].intentionByGene.allOrthologs[].symbol

String

Human gene symbol representing the predicted ortholog of the mouse gene.

projectIntentions[].intentionByGene.allOrthologs[].category

String

Category assigned to the ortholog. Possible values: LOW, MODERATE and GOOD according to the support count. The LOW category indicates the ortholog prediction has a support count of less than 5. The MODERATE category indicates the prediction has a support count of between 5 and 8, and the GOOD category indicates the support count is between 9 and 12

projectIntentions[].intentionByGene.allOrthologs[].support

String

Services that predict this human gene to the ortholog of the mouse gene.

projectIntentions[].intentionByGene.allOrthologs[].supportCount

Number

Counter of how many services support this ortholog designation.

projectIntentions[].intentionByGene.allOrthologs[].link

String

URL of the HGNC entry for this gene.

consortia

Array

Consortia associated with the project.

consortia[].id

Number

Internal record id.

consortia[].consortiumName

String

Name of the consortium.

_links

Object

Links for project.

_links.self.href

String

Link to the project.

_links.productionPlans

Array

Links to production plans.

_links.productionPlans[].href

String

Link to a specific production plan.

_links.phenotypingPlans

Array

Links to phenotyping plans.

_links.phenotypingPlans[].href

String

Link to a specific phenotyping plan.

speciesNames

Array

Species associated with the project.

assignmentStatusName

String

Assignment Status for the project. It could be marked as in conflict if existing projects are working in the same gene. Read only.

summaryStatusName

String

A status summarising the global status based on the statuses of the plans in the project. Read only.

reactivationDate

String

Date, represented as string, on which the project was activated again (assignment Status changed from inactive). Example: "2020-09-24T00:00:05". Read only.

completionNote

Null

Project completion note.

completionComment

Null

Project completion comment.

imitsMiPlanId

Number

iMits mi_plan identifier (Present if the project was transferrred from iMits). Read only.

relatedWorkUnitNames

Array

Work units associated with the project.

relatedWorkGroupNames

Array

Work groups associated with the project.

assignmentStatusStamps

Array

Stamps for the changes of Assignment Status. Read only.

colonyNames

Array

Production colonies related to the project. Read only.

phenotypingExternalRefs

Array

Phenotyping external references related to the project. Read only.

5.2. Filters

When you use request all projects, see the section Get all Projects, you can use filters on the result to select the information you require.

Filters are applied by appending the filter to the endpoint in the following fashion

/api/projects?<filter name>=<value to use as the filter>

Note: the names of the filters are case sensitive.

Filter values can be supplied as a comma separated list

For example, you could use this request to obtain information about the projects with the identifiers TPN:000000001 and TPN:000000004

/api/projects?tpn=TPN:000000001,TPN:000000004

You can also combine filters in the following fashion

/api/projects?gene=MGI:1202064&workUnitName=JAX

See the section Get all Projects using filters. for an example of a request that uses a filter.

This is the list of filters you can use:

Table 2. Filters for projects
Filter name Description

tpn

TPN(s) to be used as a filter. Eg: TPN:000000013.

intention

Name of the intention. Possible values:

  • Point Mutation

  • Deletion

  • Exon Deletion

  • Intra-exon deletion

  • Inter-exon deletion

  • Whole-gene deletion

  • Copy Number Variant

  • SNP

  • Insertion

  • Inverted insertion

  • Inversion

  • Indel

  • Complex rearrangement

gene

Marker symbol or accession id(s). Eg.Vps37a,MGI:1261835

workUnitName

Name of the work unit(s) associated with any of the plans in the project.

workGroupName

Name of the work group(s) associated with any of the plans in the project.

assignmentStatusName

Assignment Status Name. Possible values:

  • Assigned

  • Inspect - Conflict

  • Inactive

  • Abandoned

  • Inspect - Attempt

  • Inspect - GLT Mouse

summaryStatusName

Summary Status of the project. Eg: Plan Created.

colonyName

Colony name from production plan.

phenotypingExternalRef

Specimen or colony name in a phenotyping plan.

privacyName

The privacy of the project. Any of: public, protected, restricted.

imitsMiPlanId

Ids in iMits (if the project was migrated from iMits).

5.3. GET

5.3.1. Get a specific project

To obtain information about a specific project in the system you can use the TPN identifier to make a request like the one below.

Example Request

Curl:

$ curl 'http://localhost:8080/api/projects/TPN:000000001' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6Ilc2UWJJYmtNUWZ3N2lLLV9pZXBKcXciLCJpYXQiOjE2Mjg3NzcxMjMsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkyM30.TerApA_gOzwZ46EyytJiEuVVyeoqi5JbDowuh3N8HdZblwb2EKX4uvjWYnpdRUpQfUR8hOap2g0uAjo3zBQjM3CzYQbVfQOhElq89dhcMzKgV0R8FmuNaK6ZlGTscS-3bw2pZ0NBnOwRbg3MP2Pb6IPAQNRVFNfJdqPsR-Jx8sFMpSZPxD8bOqPdEzl-IMj2ndKBm5Je__-rIwmtyWpyO7oG-tbQruzL7VeuLhuCTbOKUG9bfwWL5e-RGaB7NPi96bupuNmo4B-MRey3VYcoVqaqLUuq4ytMRj3pYOogOmXfwiOX8S7cuhwco6dqS2mvYWlU_NZmttOuZadWcimOXQ'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 2981

{
  "tpn" : "TPN:000000001",
  "recovery" : false,
  "esCellQcOnly" : false,
  "comment" : "Comment test",
  "reactivationDate" : "2020-09-24T00:00:02",
  "privacyName" : "public",
  "assignmentStatusName" : "Assigned",
  "summaryStatusName" : "Plan Created",
  "relatedWorkUnitNames" : [ "BCM" ],
  "relatedWorkGroupNames" : [ "BaSH" ],
  "completionNote" : null,
  "completionComment" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/projects/TPN:000000001"
    },
    "productionPlans" : [ {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001"
    } ],
    "phenotypingPlans" : [ {
      "href" : "http://localhost:8080/api/plans/PIN:0000000002"
    } ]
  },
  "imitsMiPlanId" : 27136,
  "assignmentStatusStamps" : [ ],
  "projectIntentions" : [ {
    "molecularMutationTypeName" : "Point Mutation",
    "mutationCategorizations" : [ {
      "name" : "Null Reporter",
      "description" : null,
      "typeName" : "allele_category"
    } ],
    "intentionByGene" : {
      "bestOrthologs" : [ {
        "symbol" : "SERPINB10",
        "category" : "GOOD",
        "support" : "HGNC,OMA,EggNOG,HomoloGene,OrthoMCL,Panther,NCBI,Ensembl,Inparanoid",
        "supportCount" : 9,
        "link" : "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:8942"
      } ],
      "allOrthologs" : [ {
        "symbol" : "SERPINB10",
        "category" : "GOOD",
        "support" : "HGNC,OMA,EggNOG,HomoloGene,OrthoMCL,Panther,NCBI,Ensembl,Inparanoid",
        "supportCount" : 9,
        "link" : "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:8942"
      } ],
      "gene" : {
        "id" : 1,
        "symbol" : "Serpinb10",
        "speciesName" : "Mus musculus",
        "accessionId" : "MGI:2138648",
        "name" : "serine (or cysteine) peptidase inhibitor, clade B (ovalbumin), member 10",
        "externalLink" : "http://www.mousephenotype.org/data/genes/MGI:2138648"
      }
    },
    "intentionsBySequences" : [ {
      "index" : 1,
      "sequence" : {
        "id" : 1,
        "sequence" : ">Otog TGGGACTAGGTCACAGACAGAAAAAGGGGGATGAGAAGGCCTTAGATCTAAGGGAGGTAAAGAGAGAATTAACCACAGGAATTAGCACACTGAAGGATCGTGCTCGCCAGACCTCAAACCATCTCCTTCTTGCGTCATGAGAAAGCCTTGACCCATCATTTTCCAGTTTTCTGTGTTCTTGCCCCACTTTGGCCCCTGGATCCTGGGATCTCCCCAGAAATTCTTACCTAGCCCC",
        "typeName" : "complete",
        "categoryName" : "outcome sequence",
        "sequenceLocations" : [ {
          "id" : 1,
          "locationIndex" : 1,
          "location" : {
            "id" : 1,
            "chr" : "X",
            "start" : 1234567,
            "stop" : 7654321,
            "strand" : "+",
            "genomeBuild" : "GRCm38",
            "strainName" : "C57BL/6N",
            "speciesName" : "Mus musculus"
          }
        } ]
      }
    } ]
  } ],
  "speciesNames" : [ "Mus musculus" ],
  "consortia" : [ {
    "id" : 1,
    "consortiumName" : "CMG"
  } ],
  "colonyNames" : [ ],
  "phenotypingExternalRefs" : [ ]
}

5.3.2. Get all Projects

You can obtain all the projects that the user has permission to view using the following request. The response is paged, and by default a maximum of 20 results are returned.

Example Request

Curl:

$ curl 'http://localhost:8080/api/projects' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IkdXWXFSOTNtTkhmVkVfSEtjWkpnNEEiLCJpYXQiOjE2Mjg3NzcxMjQsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkyNH0.kWcLRNLYIMwSgQWHxBwEKb3kJfIgYOOxn3vEGn6DE-X19BshCAX7zA5B8sathh8TwDJr70kDb1cf8kN0QjBomao49q4BE5yJoGcFYSxjjCeVkYqTq2Djl4Y9rfFjtinisf1AfVvbfRpyqdvUW2QA1hgHyL5eOVam4a5pXZgpSSPvAZ7Joo3RN7LDYxEU9ADdHZsYYn2CHRG66jPCjmSz9Whvl4ycEZEiKepRkzIJ-6qb7PG0mIHsoGB11UkivC4WvMAOb1K_BMMnQu0WKwjPDpE0EM-aFKV6cOCoTRKTZRSsbwZtwUqQ5neblLFwzXjFAg8k9MTTuaYQIbtFtqz9sQ'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Link:
Content-Type: application/hal+json
Content-Length: 6768

{
  "_embedded" : {
    "projects" : [ {
      "tpn" : "TPN:000000001",
      "recovery" : false,
      "esCellQcOnly" : false,
      "comment" : "Comment test",
      "reactivationDate" : "2020-09-24T00:00:02",
      "privacyName" : "public",
      "assignmentStatusName" : "Assigned",
      "summaryStatusName" : "Plan Created",
      "relatedWorkUnitNames" : [ "BCM" ],
      "relatedWorkGroupNames" : [ "BaSH" ],
      "completionNote" : null,
      "completionComment" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        },
        "productionPlans" : [ {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001"
        } ],
        "phenotypingPlans" : [ {
          "href" : "http://localhost:8080/api/plans/PIN:0000000002"
        } ]
      },
      "imitsMiPlanId" : 27136,
      "assignmentStatusStamps" : [ ],
      "projectIntentions" : [ {
        "molecularMutationTypeName" : "Point Mutation",
        "mutationCategorizations" : [ {
          "name" : "Null Reporter",
          "description" : null,
          "typeName" : "allele_category"
        } ],
        "intentionByGene" : {
          "bestOrthologs" : [ {
            "symbol" : "SERPINB10",
            "category" : "GOOD",
            "support" : "HGNC,OMA,EggNOG,HomoloGene,OrthoMCL,Panther,NCBI,Ensembl,Inparanoid",
            "supportCount" : 9,
            "link" : "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:8942"
          } ],
          "allOrthologs" : [ {
            "symbol" : "SERPINB10",
            "category" : "GOOD",
            "support" : "HGNC,OMA,EggNOG,HomoloGene,OrthoMCL,Panther,NCBI,Ensembl,Inparanoid",
            "supportCount" : 9,
            "link" : "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:8942"
          } ],
          "gene" : {
            "id" : 1,
            "symbol" : "Serpinb10",
            "speciesName" : "Mus musculus",
            "accessionId" : "MGI:2138648",
            "name" : "serine (or cysteine) peptidase inhibitor, clade B (ovalbumin), member 10",
            "externalLink" : "http://www.mousephenotype.org/data/genes/MGI:2138648"
          }
        },
        "intentionsBySequences" : [ {
          "index" : 1,
          "sequence" : {
            "id" : 1,
            "sequence" : ">Otog TGGGACTAGGTCACAGACAGAAAAAGGGGGATGAGAAGGCCTTAGATCTAAGGGAGGTAAAGAGAGAATTAACCACAGGAATTAGCACACTGAAGGATCGTGCTCGCCAGACCTCAAACCATCTCCTTCTTGCGTCATGAGAAAGCCTTGACCCATCATTTTCCAGTTTTCTGTGTTCTTGCCCCACTTTGGCCCCTGGATCCTGGGATCTCCCCAGAAATTCTTACCTAGCCCC",
            "typeName" : "complete",
            "categoryName" : "outcome sequence",
            "sequenceLocations" : [ {
              "id" : 1,
              "locationIndex" : 1,
              "location" : {
                "id" : 1,
                "chr" : "X",
                "start" : 1234567,
                "stop" : 7654321,
                "strand" : "+",
                "genomeBuild" : "GRCm38",
                "strainName" : "C57BL/6N",
                "speciesName" : "Mus musculus"
              }
            } ]
          }
        } ]
      } ],
      "speciesNames" : [ "Mus musculus" ],
      "consortia" : [ {
        "id" : 1,
        "consortiumName" : "CMG"
      } ],
      "colonyNames" : [ ],
      "phenotypingExternalRefs" : [ ]
    }, {
      "tpn" : "TPN:000000002",
      "recovery" : null,
      "esCellQcOnly" : null,
      "comment" : null,
      "reactivationDate" : null,
      "privacyName" : "public",
      "assignmentStatusName" : "Inspect - Conflict",
      "summaryStatusName" : "Attempt In Progress",
      "relatedWorkUnitNames" : [ ],
      "relatedWorkGroupNames" : [ ],
      "completionNote" : null,
      "completionComment" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000002"
        }
      },
      "assignmentStatusStamps" : [ ],
      "projectIntentions" : [ ],
      "speciesNames" : [ "Homo sapiens" ],
      "consortia" : [ {
        "id" : 2,
        "consortiumName" : "CMG"
      } ],
      "colonyNames" : [ ],
      "phenotypingExternalRefs" : [ ]
    }, {
      "tpn" : "TPN:000000003",
      "recovery" : null,
      "esCellQcOnly" : null,
      "comment" : null,
      "reactivationDate" : null,
      "privacyName" : "public",
      "assignmentStatusName" : "Assigned",
      "summaryStatusName" : "Plan Created",
      "relatedWorkUnitNames" : [ ],
      "relatedWorkGroupNames" : [ ],
      "completionNote" : null,
      "completionComment" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000003"
        }
      },
      "assignmentStatusStamps" : [ ],
      "projectIntentions" : [ ],
      "speciesNames" : [ ],
      "consortia" : [ {
        "id" : 3,
        "consortiumName" : "CMG"
      } ],
      "colonyNames" : [ ],
      "phenotypingExternalRefs" : [ ]
    }, {
      "tpn" : "TPN:000000004",
      "recovery" : null,
      "esCellQcOnly" : null,
      "comment" : null,
      "reactivationDate" : null,
      "privacyName" : "protected",
      "assignmentStatusName" : "Inspect - Conflict",
      "summaryStatusName" : "Attempt In Progress",
      "relatedWorkUnitNames" : [ ],
      "relatedWorkGroupNames" : [ ],
      "completionNote" : null,
      "completionComment" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000004"
        }
      },
      "assignmentStatusStamps" : [ ],
      "projectIntentions" : [ ],
      "speciesNames" : [ ],
      "consortia" : [ {
        "id" : 4,
        "consortiumName" : "CMG"
      } ],
      "colonyNames" : [ ],
      "phenotypingExternalRefs" : [ ]
    }, {
      "tpn" : "TPN:000000005",
      "recovery" : null,
      "esCellQcOnly" : null,
      "comment" : null,
      "reactivationDate" : null,
      "privacyName" : "restricted",
      "assignmentStatusName" : "Assigned",
      "summaryStatusName" : "Plan Created",
      "relatedWorkUnitNames" : [ ],
      "relatedWorkGroupNames" : [ ],
      "completionNote" : null,
      "completionComment" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000005"
        }
      },
      "assignmentStatusStamps" : [ ],
      "projectIntentions" : [ ],
      "speciesNames" : [ ],
      "consortia" : [ {
        "id" : 5,
        "consortiumName" : "CMG"
      } ],
      "colonyNames" : [ ],
      "phenotypingExternalRefs" : [ ]
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/projects"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 5,
    "totalPages" : 1,
    "number" : 0
  }
}

5.3.3. Get all Projects using filters.

You can also apply filters to the endpoint to refine the search.Each filter admits several values separated by comma. The filters you can use are listed above under the section Filters.

Example Request

Curl:

GET /api/projects?assignmentStatusName=Assigned HTTP/1.1
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6ImxNa1pORkZEalBWMWZXdkx3MTFRalEiLCJpYXQiOjE2Mjg3NzcxMjIsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkyMn0.A0diaf7SfTE164ClQ7hT0lvbI57fQrq_CeIilNRhoecTjkXQ0-WuezgNIjyRVrkqm4Z4NcWkjSTrklQCB9TczOP6hlj0ZJVf6VpaTAktlF9sKOGBpyTCvvqTKHpaYxml-3NcBHFbuzKp87pMW3UI44dZVO6-t20oxsT6uuzgI_HjYPnPv9kxKoSnaOVy9GSG7DWHyU9CXt1fLq7u5bHs94uslbQyXRXke7xM9Vc9yj3TLJmzmaMu602Th2KgSy5yCifUTUJilNOFCq5LJdWNcflkMAO8qvtn_fft1O4VSv94V-f3IdIpqSqKDBRZ4NlfUTu5MG5LQi2wM6Krk9_vbQ
Host: localhost:8080
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Link:
Content-Type: application/hal+json
Content-Length: 5146

{
  "_embedded" : {
    "projects" : [ {
      "tpn" : "TPN:000000001",
      "recovery" : false,
      "esCellQcOnly" : false,
      "comment" : "Comment test",
      "reactivationDate" : "2020-09-24T00:00:02",
      "privacyName" : "public",
      "assignmentStatusName" : "Assigned",
      "summaryStatusName" : "Plan Created",
      "relatedWorkUnitNames" : [ "BCM" ],
      "relatedWorkGroupNames" : [ "BaSH" ],
      "completionNote" : null,
      "completionComment" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        },
        "productionPlans" : [ {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001"
        } ],
        "phenotypingPlans" : [ {
          "href" : "http://localhost:8080/api/plans/PIN:0000000002"
        } ]
      },
      "imitsMiPlanId" : 27136,
      "assignmentStatusStamps" : [ ],
      "projectIntentions" : [ {
        "molecularMutationTypeName" : "Point Mutation",
        "mutationCategorizations" : [ {
          "name" : "Null Reporter",
          "description" : null,
          "typeName" : "allele_category"
        } ],
        "intentionByGene" : {
          "bestOrthologs" : [ {
            "symbol" : "SERPINB10",
            "category" : "GOOD",
            "support" : "HGNC,OMA,EggNOG,HomoloGene,OrthoMCL,Panther,NCBI,Ensembl,Inparanoid",
            "supportCount" : 9,
            "link" : "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:8942"
          } ],
          "allOrthologs" : [ {
            "symbol" : "SERPINB10",
            "category" : "GOOD",
            "support" : "HGNC,OMA,EggNOG,HomoloGene,OrthoMCL,Panther,NCBI,Ensembl,Inparanoid",
            "supportCount" : 9,
            "link" : "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:8942"
          } ],
          "gene" : {
            "id" : 1,
            "symbol" : "Serpinb10",
            "speciesName" : "Mus musculus",
            "accessionId" : "MGI:2138648",
            "name" : "serine (or cysteine) peptidase inhibitor, clade B (ovalbumin), member 10",
            "externalLink" : "http://www.mousephenotype.org/data/genes/MGI:2138648"
          }
        },
        "intentionsBySequences" : [ {
          "index" : 1,
          "sequence" : {
            "id" : 1,
            "sequence" : ">Otog TGGGACTAGGTCACAGACAGAAAAAGGGGGATGAGAAGGCCTTAGATCTAAGGGAGGTAAAGAGAGAATTAACCACAGGAATTAGCACACTGAAGGATCGTGCTCGCCAGACCTCAAACCATCTCCTTCTTGCGTCATGAGAAAGCCTTGACCCATCATTTTCCAGTTTTCTGTGTTCTTGCCCCACTTTGGCCCCTGGATCCTGGGATCTCCCCAGAAATTCTTACCTAGCCCC",
            "typeName" : "complete",
            "categoryName" : "outcome sequence",
            "sequenceLocations" : [ {
              "id" : 1,
              "locationIndex" : 1,
              "location" : {
                "id" : 1,
                "chr" : "X",
                "start" : 1234567,
                "stop" : 7654321,
                "strand" : "+",
                "genomeBuild" : "GRCm38",
                "strainName" : "C57BL/6N",
                "speciesName" : "Mus musculus"
              }
            } ]
          }
        } ]
      } ],
      "speciesNames" : [ "Mus musculus" ],
      "consortia" : [ {
        "id" : 1,
        "consortiumName" : "CMG"
      } ],
      "colonyNames" : [ ],
      "phenotypingExternalRefs" : [ ]
    }, {
      "tpn" : "TPN:000000003",
      "recovery" : null,
      "esCellQcOnly" : null,
      "comment" : null,
      "reactivationDate" : null,
      "privacyName" : "public",
      "assignmentStatusName" : "Assigned",
      "summaryStatusName" : "Plan Created",
      "relatedWorkUnitNames" : [ ],
      "relatedWorkGroupNames" : [ ],
      "completionNote" : null,
      "completionComment" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000003"
        }
      },
      "assignmentStatusStamps" : [ ],
      "projectIntentions" : [ ],
      "speciesNames" : [ ],
      "consortia" : [ {
        "id" : 3,
        "consortiumName" : "CMG"
      } ],
      "colonyNames" : [ ],
      "phenotypingExternalRefs" : [ ]
    }, {
      "tpn" : "TPN:000000005",
      "recovery" : null,
      "esCellQcOnly" : null,
      "comment" : null,
      "reactivationDate" : null,
      "privacyName" : "restricted",
      "assignmentStatusName" : "Assigned",
      "summaryStatusName" : "Plan Created",
      "relatedWorkUnitNames" : [ ],
      "relatedWorkGroupNames" : [ ],
      "completionNote" : null,
      "completionComment" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000005"
        }
      },
      "assignmentStatusStamps" : [ ],
      "projectIntentions" : [ ],
      "speciesNames" : [ ],
      "consortia" : [ {
        "id" : 5,
        "consortiumName" : "CMG"
      } ],
      "colonyNames" : [ ],
      "phenotypingExternalRefs" : [ ]
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/projects"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 3,
    "totalPages" : 1,
    "number" : 0
  }
}

5.4. POST

5.4.1. Create a project

In order to create a project, it is necessary to create at least one plan that is attached to it (palnDetails object). Tne intention(s) of the project are defined in the creation. It can be a gene and one or more sequences. The complete set of fields used in the creation are the following:

Fields in project creation:

Path Type Description

recovery

Boolean

[WIP]

esCellQcOnly

Boolean

Indicates if the project is only used for ES Cell QC

comment

String

Comment on this project.

privacyName

String

Privacy level for the project (public, protected or restricted).

projectIntentions

Array

Intentions for the project.

projectIntentions[].molecularMutationTypeName

String

Name of the molecular mutation.

projectIntentions[].mutationCategorizations

Array

Mutation categorizations linked to the project intention.

projectIntentions[].mutationCategorizations[].name

String

Name of type of the mutation categorization.

projectIntentions[].mutationCategorizations[].description

Null

Description of the mutation categorization.

projectIntentions[].mutationCategorizations[].typeName

String

Name of type of the mutation categorization.Possible values allele_category or repair_mechanism.

projectIntentions[].intentionByGene

Object

Gene in the intention.

projectIntentions[].intentionByGene.gene

Object

Gene information.

projectIntentions[].intentionByGene.gene.id

Null

Internal id of the gene in GenTaR.

projectIntentions[].intentionByGene.gene.name

Null

Name of the gene.

projectIntentions[].intentionByGene.gene.symbol

String

Symbol of the gene.

projectIntentions[].intentionByGene.gene.externalLink

Null

External link for the gene.

projectIntentions[].intentionByGene.gene.accessionId

String

Accession id for the gene, e.g MGI.

projectIntentions[].intentionByGene.gene.speciesName

Null

Species associated with the gene.

projectIntentions[].intentionsBySequences

Array

Sequences in the intention.

projectIntentions[].intentionsBySequences[].index

Number

Index of the sequence

projectIntentions[].intentionsBySequences[].sequence

Object

Sequence information.

projectIntentions[].intentionsBySequences[].sequence.sequence

String

Sequence value.

projectIntentions[].intentionsBySequences[].sequence.typeName

String

Type of the sequence. Currently "complete,partial", "5_prime_end" or "3_prime_end"

projectIntentions[].intentionsBySequences[].sequence.categoryName

String

Type of the sequence. Currently "intention target sequence", "original starting sequence" or "outcome sequence" (the last one only valid for outcomes).

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations

Array

Information about the locations and their order in the sequence.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].locationIndex

Number

Index of the location (order).

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location

Object

Location information.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.chr

String

Chromosome of the location.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.start

Number

Start position.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.stop

Number

Stop position.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.strand

String

Strand of the location.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.genomeBuild

String

Genome build used as reference.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.speciesName

String

Name of the species.

projectIntentions[].intentionsBySequences[].sequence.sequenceLocations[].location.strainName

String

Name of the strain.

speciesNames

Array

Species associated with the project.

planDetails

Object

Plan with minimum information to be created alongside with the project.

planDetails.funderNames

Array

Name of the funders in for the plan.

planDetails.workUnitName

String

Work unit of the plan.

planDetails.workGroupName

String

Work group of the plan.

planDetails.comment

String

Comment in the plan.

planDetails.attemptTypeName

String

Attempt type name.

planDetails.typeName

String

Plan type name.

consortia

Array

Consortia associated with the project.

consortia[].consortiumName

String

Name of the consortium.

Example Request

Curl:

POST /api/projects HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IkpGdlVtX1NTRzNOTnRYRlliUHdYQlEiLCJpYXQiOjE2Mjg3NzcxMjEsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkyMX0.f1WVXf5sKhzMPQtmLEbFkhUoTiEx5xDzVqVqlKsAQ8mylHZ-StRIIJya9IS4BvdSEtt9_URVSAJmWe0O7oplZ-0_4jCj_nKlRQ9gsGwofSJNmg0jqtQtbKY1dDYyCYZGAv9NXAyKgKDXeY5oAFgSZ-9VHkJzmXQEDFLE6l3xkKtjPghVmGcQ7VWdfSIlInNsg1gt1dlkGVAEQEj_FmKeNlFZ2WAwOjlmA_94_MflILyP5FWaTEC9LbAwlIqbXvzVS1vCIMva8LAiYQD2Lv1mttGxSwt3mq_yZ2eiWbTntN-T0KKxKBenvPJn6EsiEhSgZaBLcYhF7wKjjT2ohfVybg
Content-Length: 1771
Host: localhost:8080

{
  "recovery" : false,
  "esCellQcOnly" : false,
  "comment" : "comment",
  "privacyName" : "public",
  "planDetails" : {
    "funderNames" : [ "KOMP" ],
    "workUnitName" : "BCM",
    "workGroupName" : "BaSH",
    "comment" : "Plan comment",
    "attemptTypeName" : "crispr",
    "typeName" : "production"
  },
  "projectIntentions" : [ {
    "molecularMutationTypeName" : "Point Mutation",
    "mutationCategorizations" : [ {
      "name" : "Null Reporter",
      "description" : null,
      "typeName" : "allele_category"
    } ],
    "intentionByGene" : {
      "gene" : {
        "id" : null,
        "name" : null,
        "symbol" : "Serpinb10",
        "speciesName" : null,
        "externalLink" : null,
        "accessionId" : "MGI:2138648"
      }
    },
    "intentionsBySequences" : [ {
      "sequence" : {
        "sequence" : ">Gpr173 Cas9 high_Gpr173_11766 \n GATGGTTTGAGAGCCTGGACTGAAGCTTGAAAGAGAAGGCTTCTGTATGGGTCCCACCCTTCCCCTGCTGCTGGCCCCCGTATGGTGATTCTGACTTTCCCCCTGCCTATGATCAGTCCCAGCAGCACCAGCTTCACATAAGCCGATGCTGATGGCAGAGACAGTGCGCCGCTCACCTCTTCGGGCTCTCCGGTGGTGTTGGCCATACTGAGGGGCAAAGGCTACCCCCAACCCTAGGGGATTGGCCAGTTCAGTATTTGATGGGCCCTGGCGGACTCCATCAGTTTTCTTGCTGAGCTACACCTGCAAATGGGAACA",
        "typeName" : "partial",
        "categoryName" : "original starting sequence",
        "sequenceLocations" : [ {
          "locationIndex" : 1,
          "location" : {
            "chr" : "X",
            "start" : 123456,
            "stop" : 654321,
            "strand" : "+",
            "genomeBuild" : "GRCm38",
            "speciesName" : "Mus musculus",
            "strainName" : "C57BL/6N"
          }
        } ]
      },
      "index" : 1
    } ]
  } ],
  "speciesNames" : [ "Mus musculus" ],
  "consortia" : [ {
    "consortiumName" : "CMG"
  } ]
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 592

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/projects/TPN:000000007"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:21.357928",
    "comment" : "Project updated",
    "details" : [ {
      "field" : "summaryStatus.name",
      "oldValue" : null,
      "newValue" : "Plan Created",
      "note" : "Field changed"
    } ]
  }, {
    "id" : 2,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:21.359034",
    "comment" : "Project created",
    "details" : [ ]
  } ]
}
Fields in Response
Path Type Description

history[].id

Number

Id to see the order.

history[].user

String

User that did the change.

history[].date

String

Date of the change.

history[].comment

String

Comment about the change.

history[].details[]

Array

Details of the changes.

history[].details[].field

String

Field that was changed.

history[].details[].oldValue

String

Value before the change.

history[].details[].newValue

String

Value after the change.

history[].details[].note

String

One of these: Field changed, Element added, Element deleted.

_links.self.href

String

Link to the resource

5.5. PUT

5.5.1. Update a project

You can update some information in a project if you are related with any of the work units specified in the plans of the project.

Example Request

Curl:

PUT /api/projects/TPN:000000001 HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6InlobHdqckdkOG4yckxLRi0xaE5vcmciLCJpYXQiOjE2Mjg3NzcxMjIsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkyMn0.SRcG1-LACJxEZJeZKExq_wUjnbtmaCFu-f_kaxcLRkp8WWOiI1tgp1wDnmQB4R1-ZxjNm1OFMkFYEP9DtnplGqPjg5VwffhnGwqervrsNrRZvoP6tqxW6Hb3bjscJXX1N95a_D3r0XIVgINSWoyHWCBBYfFNWYQILCY0Gcr8qAiKAHzY4Xp9zadC-GIBN7EapCTq5om9pNVNKyfSn-e9htg57eQmdXrGrZKpgX5ApViiTMhFmldWGfPOx6SkXFlHkoGPOjFum_sVTv2oQMoMxmxJ_ghxFYa_t4-KA8RAnyRk7OOmzf-_yHoLb1ya_GbzwpMyTdA07rahHftEtsGhHw
Content-Length: 137
Host: localhost:8080

{
  "tpn" : "TPN:000000001",
  "recovery" : true,
  "esCellQcOnly" : true,
  "comment" : "A new comment",
  "privacyName" : "protected"
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 811

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/projects/TPN:000000001"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:22.283731",
    "comment" : "Project updated",
    "details" : [ {
      "field" : "comment",
      "oldValue" : "Comment test",
      "newValue" : "A new comment",
      "note" : "Field changed"
    }, {
      "field" : "esCellQcOnly",
      "oldValue" : "false",
      "newValue" : "true",
      "note" : "Field changed"
    }, {
      "field" : "privacy.name",
      "oldValue" : "public",
      "newValue" : "protected",
      "note" : "Field changed"
    }, {
      "field" : "recovery",
      "oldValue" : "false",
      "newValue" : "true",
      "note" : "Field changed"
    } ]
  } ]
}
Fields in Response
Path Type Description

history[].id

Number

Id to see the order.

history[].user

String

User that did the change.

history[].date

String

Date of the change.

history[].comment

String

Comment about the change.

history[].details[]

Array

Details of the changes.

history[].details[].field

String

Field that was changed.

history[].details[].oldValue

String

Value before the change.

history[].details[].newValue

String

Value after the change.

history[].details[].note

String

One of these: Field changed, Element added, Element deleted.

_links.self.href

String

Link to the resource

6. Plans

This section describes the REST endpoints for plans in the system.

6.1. Fields

These are the fields you are going to see in the body of a request in a GET or in the payload for POST or PUT operations.

6.1.1. Crispr plan.

Path Type Description

pin

String

Public identifier for the plan.

tpn

String

Public identifier for the project.

typeName

String

Plan type.

attemptTypeName

String

Attempt type.

comment

Null

Comment for the plan

statusName

String

Current status of the plan.

statusDates[]

Array

Stamps of the statuses the plan has gone through.

statusDates[].statusName

String

Status that the plan had on a specific date.

statusDates[].date

String

Date of the status change.

summaryStatusName

String

A status summarising the global status based on the statuses of the children of the plan.

_links.self.href

String

Link to the plan.

_links.project.href

String

Link to the project.

summaryStatusDates[]

Array

Stamps of the statuses summaries the plan has gone through.

summaryStatusDates[].statusName

String

Summary status that the plan had on a specific date.

summaryStatusDates[].date

String

Date of the summary status change.

funderNames

Array

Funders for the plan.

workUnitName

String

Work unit for the plan.

workGroupName

String

Work group for the plan.

statusTransition

Object

Information about the current state in the state machine for the plan.

statusTransition.currentStatus

String

Current status in the plan

statusTransition.transitions[]

Array

Transitions in the state machine given the current state.

statusTransition.transitions[].action

String

Action or transition’s name.

statusTransition.transitions[].description

String

Transition’s description.

statusTransition.transitions[].triggeredByUser

Boolean

Indicates whether the transition is executed by the user or by the system.

statusTransition.transitions[].available

Boolean

Indicates if the transition can be executed at the moment.

statusTransition.transitions[].note

Null

Additional explanation about the availability to execute the transition.

statusTransition.transitions[].nextStatus

String

Next status that the plan will have if the transition is executed.

statusTransition.actionToExecute

Null

Name of the transition (action) to execute.

crisprAttempt

Object

Information about the Crispr attempt.

crisprAttempt.miDate

String

Micro-injection date.

crisprAttempt.experimental

Boolean

Whether the attempt is experimental or not.

crisprAttempt.comment

String

Crispt attempt comment.

crisprAttempt.mutagenesisExternalRef

String

Mutagenesis external reference.

crisprAttempt.imitsMiAttemptId

Number

Id in iMits for this record.

crisprAttempt.attemptExternalRef

Null

External reference for the attempt.

crisprAttempt.totalEmbryosInjected

Number

Total embryos injected.

crisprAttempt.totalEmbryosSurvived

Number

Total embryos survived.

crisprAttempt.embryo2Cell

String

Number of embryos at the two cell stage.

crisprAttempt.strainInjectedName

String

Name of the strain injected.

crisprAttempt.embryoTransferDay

String

Embryo transfer day.

crisprAttempt.totalTransferred

Number

Total transferred

crisprAttempt.nucleases

Array

Information about the nucleases used in the attempt

crisprAttempt.nucleases[].id

Number

Id of the record in the system.

crisprAttempt.nucleases[].typeName

String

Name of the type of nuclease.

crisprAttempt.nucleases[].concentration

Number

Concentration of the nuclease.

crisprAttempt.nucleases[].className

String

Name of the class of nuclease. [protein or mRNA].

crisprAttempt.guides

Array

Information about the guides used in the attempt

crisprAttempt.guides[].id

Number

Id of the record in the system.

crisprAttempt.guides[].chr

String

Chromosome in the guide.

crisprAttempt.guides[].start

Number

Start

crisprAttempt.guides[].stop

Number

Stop.

crisprAttempt.guides[].grnaConcentration

Number

gRNA concentration in the guide.

crisprAttempt.guides[].sequence

String

sequence in the guide.

crisprAttempt.guides[].truncatedGuide

Boolean

Whether or not the guide is truncated.

crisprAttempt.guides[].strand

String

Strand of the guide.

crisprAttempt.guides[].genomeBuild

String

Genome build.

crisprAttempt.guides[].pam

String

PAM

crisprAttempt.guides[].guideSequence

String

Guide sequence

crisprAttempt.guides[].reversed

Boolean

Whether or not the sequence was reversed

crisprAttempt.guides[].sangerService

Boolean

Whether or not the sequence come from the sanger wge service

crisprAttempt.guides[].formatName

String

Format of the guide. For example: sgRNA.

crisprAttempt.guides[].sourceName

String

Source of the guide. For example: in-house.

crisprAttempt.mutagenesisDonors

Array

Information about the mutagenesis donors.

crisprAttempt.mutagenesisDonors[].id

Number

Id of the record in the system.

crisprAttempt.mutagenesisDonors[].concentration

Number

Mutagenesis donor’s concentration.

crisprAttempt.mutagenesisDonors[].vectorName

String

Vector’s name.

crisprAttempt.mutagenesisDonors[].oligoSequenceFasta

String

Oligo sequence as FASTA format.

crisprAttempt.mutagenesisDonors[].preparationTypeName

String

Preparation type.

crisprAttempt.reagents

Array

Information about the reagents.

crisprAttempt.reagents[].id

Number

Id of the record in the system.

crisprAttempt.reagents[].reagentName

String

Reagent’s name.

crisprAttempt.reagents[].reagentDescription

String

Reagent’s description.

crisprAttempt.reagents[].concentration

Number

Reagent’s concentration.

crisprAttempt.genotypePrimers

Array

Information about the genotype primers.

crisprAttempt.genotypePrimers[].id

Number

Id of the record in the system.

crisprAttempt.genotypePrimers[].name

String

Genotype primer’s name.

crisprAttempt.genotypePrimers[].genomicStartCoordinate

Number

Genomic start coordinate.

crisprAttempt.genotypePrimers[].genomicEndCoordinate

Number

Genomic end coordinate.

crisprAttempt.genotypePrimers[].sequence

String

Genotype primer sequence.

crisprAttempt.assay

Object

Information about the assay.

crisprAttempt.assay.id

Number

Id of the record in the system.

crisprAttempt.assay.typeName

String

Assay type.

crisprAttempt.assay.numFounderPups

Number

Number of founder pups.

crisprAttempt.assay.numFounderSelectedForBreeding

Number

Number of founder selected for breeding.

crisprAttempt.assay.founderNumAssays

Number

Number of founder assays.

crisprAttempt.assay.numDeletionG0Mutants

Number

Number of deletion G0 mutants.

crisprAttempt.assay.numG0WhereMutationDetected

Number

Number of G0 where mutations where detected.

crisprAttempt.assay.numHdrG0Mutants

Number

Number of HDR G0 mutants.

crisprAttempt.assay.numHdrG0MutantsAllDonorsInserted

Number

Number of HDR G0 mutants with all donors inserted.

crisprAttempt.assay.numHdrG0MutantsSubsetDonorsInserted

Number

Number of HDR G0 mutants with a subset of donors inserted.

crisprAttempt.assay.numHrG0Mutants

Number

Number of HR G0 mutants.

crisprAttempt.assay.numNhejG0Mutants

Number

Number of NHEJ G0 mutants.

6.1.2. ES Cell plan.

Path Type Description

pin

String

Public identifier for the plan.

tpn

String

Public identifier for the project.

typeName

String

Plan type.

attemptTypeName

String

Attempt type.

comment

Null

Comment for the plan

statusName

String

Current status of the plan.

statusDates[]

Array

Stamps of the statuses the plan has gone through.

statusDates[].statusName

String

Status that the plan had on a specific date.

statusDates[].date

String

Date of the status change.

summaryStatusName

String

A status summarising the global status based on the statuses of the children of the plan.

_links.self.href

String

Link to the plan.

_links.project.href

String

Link to the project.

summaryStatusDates[]

Array

Stamps of the statuses summaries the plan has gone through.

summaryStatusDates[].statusName

String

Summary status that the plan had on a specific date.

summaryStatusDates[].date

String

Date of the summary status change.

funderNames

Array

Funders for the plan.

workUnitName

String

Work unit for the plan.

workGroupName

String

Work group for the plan.

statusTransition

Object

Information about the current state in the state machine for the plan.

statusTransition.currentStatus

String

Current status in the plan

statusTransition.transitions[]

Array

Transitions in the state machine given the current state.

statusTransition.transitions[].action

String

Action or transition’s name.

statusTransition.transitions[].description

String

Transition’s description.

statusTransition.transitions[].triggeredByUser

Boolean

Indicates whether the transition is executed by the user or by the system.

statusTransition.transitions[].available

Boolean

Indicates if the transition can be executed at the moment.

statusTransition.transitions[].note

Null

Additional explanation about the availability to execute the transition.

statusTransition.transitions[].nextStatus

String

Next status that the plan will have if the transition is executed.

statusTransition.actionToExecute

Null

Name of the transition (action) to execute.

esCellAttempt

Object

ES cell attempt details.

esCellAttempt.esCellName

String

The ES Cell used in the attempt.

esCellAttempt.imitsMiAttemptId

Number

The iMits attempt identifier (This is included if the data was migrated from iMits).

esCellAttempt.miDate

String

The date when the micro-injection was performed.

esCellAttempt.attemptExternalRef

String

External reference used to track the ES cell attempt.

esCellAttempt.experimental

Boolean

A flag indicating if the attempt is experimental.

esCellAttempt.comment

String

A comment about the ES cell attempt.

esCellAttempt.blastStrainName

String

Name of the blastocyst strain.

esCellAttempt.totalBlastsInjected

Number

Number of blastocysts injected.

esCellAttempt.totalTransferred

Number

Number of blastocysts transferred.

esCellAttempt.numberSurrogatesReceiving

Number

Number of surrogate mothers recieving blastocysts.

esCellAttempt.totalPupsBorn

Number

Number of pups born.

esCellAttempt.totalFemaleChimeras

Number

Total number of female chimeras.

esCellAttempt.totalMaleChimeras

Number

Total number of male chimeras.

esCellAttempt.totalChimeras

Number

Total number of chimeras.

esCellAttempt.numberOfMalesWith0To39PercentChimerism

Number

Number of male offspring with 0-39 % chimerism.

esCellAttempt.numberOfMalesWith40To79PercentChimerism

Number

Number of male offspring with 40-79 % chimerism.

esCellAttempt.numberOfMalesWith80To99PercentChimerism

Number

Number of male offspring with 80-99 % chimerism.

esCellAttempt.numberOfMalesWith100PercentChimerism

Number

Number of male offspring with 100 % chimerism.

esCellAttempt.testCrossStrainName

String

Name of the strain used for the test cross.

esCellAttempt.dateChimerasMated

String

The date when the chimeras were mated.

esCellAttempt.numberOfChimeraMatingsAttempted

Number

Number of matings set up with chimeras.

esCellAttempt.numberOfChimeraMatingsSuccessful

Number

Number of successful chimera matings.

esCellAttempt.numberOfChimerasWithGltFromCct

Number

Number of chimeras with germ line transmission assessed by coat-colour type.

esCellAttempt.numberOfChimerasWithGltFromGenotyping

Number

Number of chimeras with germ line transmission assessed by genotyping.

esCellAttempt.numberOfChimerasWith0To9PercentGlt

Number

Number of chimeras with 0-9 % germ line transmission.

esCellAttempt.numberOfChimerasWith10To49PercentGlt

Number

Number of chimeras with 10-49 % germ line transmission.

esCellAttempt.numberOfChimerasWith50To99PercentGlt

Number

Number of chimeras with 50-99 % germ line transmission.

esCellAttempt.numberOfChimerasWith100PercentGlt

Number

Number of chimeras with 100 % germ line transmission.

esCellAttempt.totalF1MiceFromMatings

Number

Total number of F1 offspring from matings.

esCellAttempt.numberOfCctOffspring

Number

esCellAttempt.cassetteTransmissionVerified

String

The date when cassette transmission was confirmed.

esCellAttempt.numberOfHetOffspring

Number

Number of heterozygous offspring.

esCellAttempt.numberOfLiveGltOffspring

Number

Number of live germ line transmission offspring.

6.1.3. Cre Allele Modification plan.

Path Type Description

pin

String

Public identifier for the plan.

tpn

String

Public identifier for the project.

typeName

String

Plan type.

attemptTypeName

String

Attempt type.

comment

Null

Comment for the plan

statusName

String

Current status of the plan.

statusDates[]

Array

Stamps of the statuses the plan has gone through.

statusDates[].statusName

String

Status that the plan had on a specific date.

statusDates[].date

String

Date of the status change.

summaryStatusName

String

A status summarising the global status based on the statuses of the children of the plan.

_links.self.href

String

Link to the plan.

_links.project.href

String

Link to the project.

summaryStatusDates[]

Array

Stamps of the statuses summaries the plan has gone through.

summaryStatusDates[].statusName

String

Summary status that the plan had on a specific date.

summaryStatusDates[].date

String

Date of the summary status change.

funderNames

Array

Funders for the plan.

workUnitName

String

Work unit for the plan.

workGroupName

String

Work group for the plan.

statusTransition

Object

Information about the current state in the state machine for the plan.

statusTransition.currentStatus

String

Current status in the plan

statusTransition.transitions[]

Array

Transitions in the state machine given the current state.

statusTransition.transitions[].action

String

Action or transition’s name.

statusTransition.transitions[].description

String

Transition’s description.

statusTransition.transitions[].triggeredByUser

Boolean

Indicates whether the transition is executed by the user or by the system.

statusTransition.transitions[].available

Boolean

Indicates if the transition can be executed at the moment.

statusTransition.transitions[].note

String

Additional explanation about the availability to execute the transition.

statusTransition.transitions[].nextStatus

String

Next status that the plan will have if the transition is executed.

statusTransition.actionToExecute

Null

Name of the transition (action) to execute.

creAlleleModificationStartingPoint

Object

Outcome information

creAlleleModificationStartingPoint._links

Object

creAlleleModificationStartingPoint._links.outcome

Object

creAlleleModificationStartingPoint._links.outcome.href

String

Outcome link

creAlleleModificationStartingPoint._links.productionPlan

Object

creAlleleModificationStartingPoint._links.productionPlan.href

String

Production plan link

creAlleleModificationStartingPoint.outcomeTpo

String

Public identifier for the outcome.

creAlleleModificationStartingPoint.productionPlanPin

String

Public identifier for the outcome production plan.

creAlleleModificationAttempt

Object

Cre allele modification attempt details.

creAlleleModificationAttempt.modificationExternalRef

String

External reference used to track the modification. For data exported from iMits the mouse allele modification colony name has been recorded as the modification external reference.

creAlleleModificationAttempt.numberOfCreMatingsSuccessful

Number

records the number of successful Cre matings.

creAlleleModificationAttempt.tatCre

Boolean

Indicates tat Cre used for modification rather than a deleter strain.

creAlleleModificationAttempt.deleterStrainName

String

Cre allele modification attempt deleter strain

6.1.4. Phenotyping plan.

Path Type Description

pin

String

Public identifier for the plan.

tpn

String

Public identifier for the project.

typeName

String

Plan type.

attemptTypeName

String

Attempt type.

comment

Null

Comment for the plan

statusName

String

Current status of the plan.

statusDates[]

Array

Stamps of the statuses the plan has gone through.

statusDates[].statusName

String

Status that the plan had on a specific date.

statusDates[].date

String

Date of the status change.

summaryStatusName

String

A status summarising the global status based on the statuses of the children of the plan.

_links.self.href

String

Link to the plan.

_links.project.href

String

Link to the project.

summaryStatusDates[]

Array

Stamps of the statuses summaries the plan has gone through.

summaryStatusDates[].statusName

String

Summary status that the plan had on a specific date.

summaryStatusDates[].date

String

Date of the summary status change.

funderNames

Array

Funders for the plan.

workUnitName

String

Work unit for the plan.

workGroupName

String

Work group for the plan.

statusTransition

Object

Information about the current state in the state machine for the plan.

statusTransition.currentStatus

String

Current status in the plan

statusTransition.transitions[]

Array

Transitions in the state machine given the current state.

statusTransition.transitions[].action

String

Action or transition’s name.

statusTransition.transitions[].description

String

Transition’s description.

statusTransition.transitions[].triggeredByUser

Boolean

Indicates whether the transition is executed by the user or by the system.

statusTransition.transitions[].available

Boolean

Indicates if the transition can be executed at the moment.

statusTransition.transitions[].note

String

Additional explanation about the availability to execute the transition.

statusTransition.transitions[].nextStatus

String

Next status that the plan will have if the transition is executed.

statusTransition.actionToExecute

Null

Name of the transition (action) to execute.

phenotypingStartingPoint

Object

Outcome information

phenotypingStartingPoint._links

Object

phenotypingStartingPoint._links.outcome

Object

phenotypingStartingPoint._links.outcome.href

String

Outcome link

phenotypingStartingPoint._links.productionPlan

Object

phenotypingStartingPoint._links.productionPlan.href

String

Production plan link

phenotypingStartingPoint.outcomeTpo

String

Public identifier for the outcome.

phenotypingStartingPoint.productionPlanPin

String

Public identifier for the outcome production plan.

phenotypingAttemptResponse

Object

Phenotyping attempt details.

phenotypingAttemptResponse.phenotypingExternalRef

String

Phenotyping colony name or specimen group name

phenotypingAttemptResponse.phenotypingBackgroundStrainName

String

Phenotyping attempt background strain.

phenotypingAttemptResponse.doNotCountTowardsCompleteness

Boolean

phenotypingAttemptResponse.cohortProductionWorkUnitName

String

6.2. Filters

When you use the endpoint to get all the plans, you can use filters in a similar way to project filters, see Filters, to select the information you require.

This is the list of filters you can use:

6.2.1. Common filters

Table 3. Common filters for plans
Filter name Description

pin

PIN(s) to be used as a filter. Eg: PIN:0000000014.

tpn

TPN(s) to be used as a filter. Eg: TPN:000000001.

workUnitName

Name of the work unit associated with the plan.

workGroup

Name of the work group associated with the plan.

summaryStatusName

Name of the summary status in the plan.

typeName

Name of the type of the plan. Possible values are:

  • production

  • phenotyping

6.2.2. Specific filters for production plan

Table 4. Filters for production plans

attemptTypeName

Attempt type. Possible values are:

  • crispr

  • haplo-essential crispr

  • es cell

  • cre allele modification

  • breeding

imitsMiAttemptId

iMits mi attempt id.

6.2.3. Specific filters for phenotyping plan

Table 5. Filters for phenotyping plans

attemptTypeName

Attempt type. Possible values are:

  • adult and embryo phenotyping

  • haplo-essential phenotyping

imitsPhenotypeAttemptId

iMits phenotyping attempt id.

phenotypingExternalRef

Phentoyping External Reference (colony name or specimen group name).

doNotCountTowardsCompleteness

Do not count towards completeness boolean, true or false.

6.3. GET

6.3.1. Get a specific plan

This endpoint shows a plan in the system.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IktNR3ZSS1ZoM3R3SzVpdHhKbU1sX0EiLCJpYXQiOjE2Mjg3NzcxMDksInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkwOX0.ZTuXwi8GvSzfIiRM4BmIqeIASjE9-qwht5BlUxZZubxSg6z6YOdoPXrl3VYagRnLQ-ky0FjRzqtz4eVIdFEKnQiZmz6jEc4YnlPK9firAWpSa_tWrrXPgyS4wmAKulZT_NLvpGUvNZX0290yca1BijzUIcUyPASNTFXlhwRzGwdBO6D7aCMUNSWDT1JsmYvbWbSBINO86W7r7M7zs47qINYBaFPQey7KTKpmCvYdX3naOzu3tyajSBoJxQBVPrLqWHNKEKapLeEIyj1oxMN4iRzdYEkjrQOTMMBUqGqmM1Yh4mDExiDBAZWZy9wN6BxmR7ht-2b5Cy1aSQ55WMGzTw'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 3548

{
  "pin" : "PIN:0000000001",
  "tpn" : "TPN:000000001",
  "attemptTypeName" : "crispr",
  "funderNames" : [ "KOMP" ],
  "workUnitName" : "BCM",
  "workGroupName" : "BaSH",
  "comment" : null,
  "crisprAttempt" : {
    "miDate" : "2019-02-26",
    "experimental" : true,
    "comment" : "crispr plan comment",
    "mutagenesisExternalRef" : "MF-26326",
    "imitsMiAttemptId" : 20043,
    "attemptExternalRef" : null,
    "embryoTransferDay" : "Same Day",
    "totalTransferred" : 72,
    "nucleases" : [ {
      "id" : 1,
      "typeName" : "Cas9",
      "concentration" : 250.0,
      "className" : "protein"
    } ],
    "guides" : [ {
      "id" : 1,
      "sequence" : "CTTCACGTACCAAGGAGGGGTGG",
      "guideSequence" : "CTTCACGTACCAAGGAGGGG",
      "pam" : "AGG",
      "chr" : "X",
      "start" : 46245139,
      "stop" : 46245161,
      "strand" : "+",
      "genomeBuild" : "GRCm38",
      "grnaConcentration" : 300.0,
      "truncatedGuide" : true,
      "reversed" : false,
      "sangerService" : false,
      "formatName" : "sgRNA",
      "sourceName" : "commercial"
    } ],
    "mutagenesisDonors" : [ {
      "id" : 1,
      "concentration" : 5.0,
      "vectorName" : "pUC18_Ikzf2_conditional",
      "oligoSequenceFasta" : "ATAATTGGCAGCCTGATTAGAAGAATGCCCATCTTGTCTAGTGACACATTAGAACAATGAGTAATTGCTCGATGCGGATCCATAACTTCGTATAGCATACATTATACGAAGTTATTCTCTGGGATTAAGAAAAAACTAACATATGAAACAGAAGCCCAGACATCTAAAACCACAAAGA",
      "preparationTypeName" : "Circular"
    } ],
    "reagents" : [ {
      "id" : 1,
      "reagentName" : "Ligase IV",
      "reagentDescription" : "NHEJ Inhibitor",
      "concentration" : 334.0
    } ],
    "genotypePrimers" : [ {
      "id" : 1,
      "genomicStartCoordinate" : 1,
      "genomicEndCoordinate" : 200,
      "name" : "Gpr68wtR",
      "sequence" : "GTAGAGGGACAGGCAGTTGG"
    } ],
    "totalEmbryosInjected" : 72,
    "totalEmbryosSurvived" : 70,
    "embryo2Cell" : "20043",
    "assay" : {
      "id" : 1,
      "typeName" : "T7EN1",
      "numFounderPups" : 26,
      "numFounderSelectedForBreeding" : 1,
      "founderNumAssays" : 26,
      "numDeletionG0Mutants" : 1,
      "numG0WhereMutationDetected" : 1,
      "numHdrG0Mutants" : 1,
      "numHdrG0MutantsAllDonorsInserted" : 0,
      "numHdrG0MutantsSubsetDonorsInserted" : 0,
      "numHrG0Mutants" : 0,
      "numNhejG0Mutants" : 0
    },
    "strainInjectedName" : "C57BL/6NJ"
  },
  "typeName" : "production",
  "statusName" : "Founder Obtained",
  "summaryStatusName" : "Founder Obtained",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001"
    },
    "project" : {
      "href" : "http://localhost:8080/api/projects/TPN:000000001"
    }
  },
  "statusDates" : [ {
    "statusName" : "Plan Created",
    "date" : "2018-01-15T00:00:00.706639"
  }, {
    "statusName" : "Attempt In Progress",
    "date" : "2018-01-16T00:00:00.706639"
  }, {
    "statusName" : "Founder Obtained",
    "date" : "2018-02-22T20:18:00.706639"
  }, {
    "statusName" : "Embryos Obtained",
    "date" : "2018-04-04T14:32:00.706639"
  } ],
  "summaryStatusDates" : [ {
    "statusName" : "Founder Obtained",
    "date" : "2019-08-06T20:09:51.706639"
  } ],
  "statusTransition" : {
    "currentStatus" : "Founder Obtained",
    "transitions" : [ {
      "action" : "abortWhenFounderObtained",
      "description" : "Abort the plan after a founder obtained",
      "triggeredByUser" : true,
      "available" : true,
      "note" : null,
      "nextStatus" : "Attempt Aborted"
    } ],
    "actionToExecute" : null
  }
}

6.3.2. Get all Plans

This endpoint shows all the plans the user has permission to see.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IlRFYnR0eFloamhEeDVBbmdOQTdoWVEiLCJpYXQiOjE2Mjg3NzcxMDcsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkwN30.PKfzwj-jOLeNuDf-mRpiVtKAbwyvQI99rekvDu6uX_KANS8UDucVlRGsMFm10_qtdV8z_5yIeQ8MDj6v1I-ltbMgA3sWFusgiLsrG-tuctoo95JGuw9z77cA3xrlijFF8HBcrq-eeqxMCl7G93dRfm04hHSqvjdvYhcYkUs0G7PLvtJv4kdMuIZmByNKbNSwg7tocLhkCPp9PDBuNvtFnIG9zE2pXwT9vXwgbY0eUI3DF3jNic-U5_ramdk65b3HU93oaT8vyqT8v7Au1Epdmb7btaS3Rr8YeQxodnhyj7PBztaPwZTPumtcYmqwlom3yAJ59EeWOevhlS8c9YK4Fw'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Link:
Content-Type: application/hal+json
Content-Length: 18818

{
  "_embedded" : {
    "plans" : [ {
      "pin" : "PIN:0000000001",
      "tpn" : "TPN:000000001",
      "attemptTypeName" : "crispr",
      "funderNames" : [ "KOMP" ],
      "workUnitName" : "BCM",
      "workGroupName" : "BaSH",
      "comment" : null,
      "crisprAttempt" : {
        "miDate" : "2019-02-26",
        "experimental" : true,
        "comment" : "crispr plan comment",
        "mutagenesisExternalRef" : "MF-26326",
        "imitsMiAttemptId" : 20043,
        "attemptExternalRef" : null,
        "embryoTransferDay" : "Same Day",
        "totalTransferred" : 72,
        "nucleases" : [ {
          "id" : 1,
          "typeName" : "Cas9",
          "concentration" : 250.0,
          "className" : "protein"
        } ],
        "guides" : [ {
          "id" : 1,
          "sequence" : "CTTCACGTACCAAGGAGGGGTGG",
          "guideSequence" : "CTTCACGTACCAAGGAGGGG",
          "pam" : "AGG",
          "chr" : "X",
          "start" : 46245139,
          "stop" : 46245161,
          "strand" : "+",
          "genomeBuild" : "GRCm38",
          "grnaConcentration" : 300.0,
          "truncatedGuide" : true,
          "reversed" : false,
          "sangerService" : false,
          "formatName" : "sgRNA",
          "sourceName" : "commercial"
        } ],
        "mutagenesisDonors" : [ {
          "id" : 1,
          "concentration" : 5.0,
          "vectorName" : "pUC18_Ikzf2_conditional",
          "oligoSequenceFasta" : "ATAATTGGCAGCCTGATTAGAAGAATGCCCATCTTGTCTAGTGACACATTAGAACAATGAGTAATTGCTCGATGCGGATCCATAACTTCGTATAGCATACATTATACGAAGTTATTCTCTGGGATTAAGAAAAAACTAACATATGAAACAGAAGCCCAGACATCTAAAACCACAAAGA",
          "preparationTypeName" : "Circular"
        } ],
        "reagents" : [ {
          "id" : 1,
          "reagentName" : "Ligase IV",
          "reagentDescription" : "NHEJ Inhibitor",
          "concentration" : 334.0
        } ],
        "genotypePrimers" : [ {
          "id" : 1,
          "genomicStartCoordinate" : 1,
          "genomicEndCoordinate" : 200,
          "name" : "Gpr68wtR",
          "sequence" : "GTAGAGGGACAGGCAGTTGG"
        } ],
        "totalEmbryosInjected" : 72,
        "totalEmbryosSurvived" : 70,
        "embryo2Cell" : "20043",
        "assay" : {
          "id" : 1,
          "typeName" : "T7EN1",
          "numFounderPups" : 26,
          "numFounderSelectedForBreeding" : 1,
          "founderNumAssays" : 26,
          "numDeletionG0Mutants" : 1,
          "numG0WhereMutationDetected" : 1,
          "numHdrG0Mutants" : 1,
          "numHdrG0MutantsAllDonorsInserted" : 0,
          "numHdrG0MutantsSubsetDonorsInserted" : 0,
          "numHrG0Mutants" : 0,
          "numNhejG0Mutants" : 0
        },
        "strainInjectedName" : "C57BL/6NJ"
      },
      "typeName" : "production",
      "statusName" : "Founder Obtained",
      "summaryStatusName" : "Founder Obtained",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001"
        },
        "project" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2018-01-15T00:00:00.706639"
      }, {
        "statusName" : "Attempt In Progress",
        "date" : "2018-01-16T00:00:00.706639"
      }, {
        "statusName" : "Founder Obtained",
        "date" : "2018-02-22T20:18:00.706639"
      }, {
        "statusName" : "Embryos Obtained",
        "date" : "2018-04-04T14:32:00.706639"
      } ],
      "summaryStatusDates" : [ {
        "statusName" : "Founder Obtained",
        "date" : "2019-08-06T20:09:51.706639"
      } ],
      "statusTransition" : {
        "currentStatus" : "Founder Obtained",
        "transitions" : [ {
          "action" : "abortWhenFounderObtained",
          "description" : "Abort the plan after a founder obtained",
          "triggeredByUser" : true,
          "available" : true,
          "note" : null,
          "nextStatus" : "Attempt Aborted"
        } ],
        "actionToExecute" : null
      }
    }, {
      "pin" : "PIN:0000000002",
      "tpn" : "TPN:000000001",
      "attemptTypeName" : "crispr",
      "funderNames" : [ ],
      "workUnitName" : "BCM",
      "workGroupName" : "BaSH",
      "comment" : null,
      "crisprAttempt" : {
        "miDate" : "2018-03-26",
        "experimental" : false,
        "comment" : "crispr plan comment",
        "mutagenesisExternalRef" : "MF-26328",
        "imitsMiAttemptId" : 20044,
        "attemptExternalRef" : null,
        "embryoTransferDay" : "Same Day",
        "totalTransferred" : 72,
        "nucleases" : [ {
          "id" : 2,
          "typeName" : "Cas9",
          "concentration" : 250.0,
          "className" : "protein"
        } ],
        "guides" : [ {
          "id" : 2,
          "sequence" : "CCATGATCTAATCTGTGGTTAAA",
          "guideSequence" : "CCATGATCTAATCTGTGGTTAAA",
          "pam" : "AAA",
          "chr" : "14",
          "start" : 56912859,
          "stop" : 56912881,
          "strand" : "+",
          "genomeBuild" : "GRCm38",
          "grnaConcentration" : 300.0,
          "truncatedGuide" : false,
          "reversed" : false,
          "sangerService" : false,
          "formatName" : "cr-tracrRNA",
          "sourceName" : "in-house"
        } ],
        "mutagenesisDonors" : [ {
          "id" : 2,
          "concentration" : 5.0,
          "vectorName" : "pUC18_Ikzf2_conditional",
          "oligoSequenceFasta" : "ATAATTGGCAGCCTGATTAGAAGAATGCCCATCTTGTCTAGTGACACATTAGAACAATGAGTAATTGCTCGATGCGGATCCATAACTTCGTATAGCATACATTATACGAAGTTATTCTCTGGGATTAAGAAAAAACTAACATATGAAACAGAAGCCCAGACATCTAAAACCACAAAGA",
          "preparationTypeName" : "Circular"
        } ],
        "reagents" : [ {
          "id" : 2,
          "reagentName" : "Xrcc5",
          "reagentDescription" : "NHEJ Inhibitor",
          "concentration" : 334.0
        } ],
        "genotypePrimers" : [ {
          "id" : 2,
          "genomicStartCoordinate" : 1,
          "genomicEndCoordinate" : 200,
          "name" : "Gpr68wtR",
          "sequence" : "GTAGAGGGACAGGCAGTTGG"
        } ],
        "totalEmbryosInjected" : 70,
        "totalEmbryosSurvived" : 64,
        "embryo2Cell" : "20044",
        "assay" : {
          "id" : 2,
          "typeName" : "LOA",
          "numFounderPups" : 26,
          "numFounderSelectedForBreeding" : 1,
          "founderNumAssays" : 26,
          "numDeletionG0Mutants" : 1,
          "numG0WhereMutationDetected" : 1,
          "numHdrG0Mutants" : 1,
          "numHdrG0MutantsAllDonorsInserted" : 0,
          "numHdrG0MutantsSubsetDonorsInserted" : 0,
          "numHrG0Mutants" : 0,
          "numNhejG0Mutants" : 0
        },
        "strainInjectedName" : "C57BL/6NJ"
      },
      "typeName" : "production",
      "statusName" : "Founder Obtained",
      "summaryStatusName" : "Plan Created",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000002"
        },
        "project" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2020-04-14T12:46:24.706639"
      } ],
      "summaryStatusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2020-04-14T12:46:24.706639"
      } ],
      "statusTransition" : {
        "currentStatus" : "Founder Obtained",
        "transitions" : [ {
          "action" : "abortWhenFounderObtained",
          "description" : "Abort the plan after a founder obtained",
          "triggeredByUser" : true,
          "available" : false,
          "note" : "The plan has colonies that are not aborted. Please abort them first",
          "nextStatus" : "Attempt Aborted"
        } ],
        "actionToExecute" : null
      }
    }, {
      "pin" : "PIN:0000000003",
      "tpn" : "TPN:000000001",
      "attemptTypeName" : "adult and embryo phenotyping",
      "funderNames" : [ "KOMP" ],
      "workUnitName" : "BCM",
      "workGroupName" : "BaSH",
      "comment" : null,
      "phenotypingStartingPoint" : {
        "_links" : {
          "outcome" : {
            "href" : "http://localhost:8080/api/plans/PIN:0000000002/outcomes/TPO:000000000001"
          },
          "productionPlan" : {
            "href" : "http://localhost:8080/api/plans/PIN:0000000002"
          }
        },
        "outcomeTpo" : "TPO:000000000001",
        "productionPlanPin" : "PIN:0000000002"
      },
      "phenotypingAttemptResponse" : {
        "doNotCountTowardsCompleteness" : false,
        "phenotypingExternalRef" : "CR10129",
        "phenotypingBackgroundStrainName" : "C57BL/6NJ",
        "cohortProductionWorkUnitName" : "BCM"
      },
      "typeName" : "phenotyping",
      "statusName" : "Plan Created",
      "summaryStatusName" : "Plan Created",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000003"
        },
        "project" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2020-04-14T12:46:24.706639"
      } ],
      "summaryStatusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2020-04-14T12:46:24.706639"
      } ],
      "statusTransition" : {
        "currentStatus" : "Plan Created",
        "transitions" : [ {
          "action" : "abandonWhenCreated",
          "description" : "Abandon a phenotyping plan that has no associated phenotyping stage information",
          "triggeredByUser" : true,
          "available" : false,
          "note" : "The plan already has phenotyping stages. Please abort the plan.",
          "nextStatus" : "Plan Abandoned"
        }, {
          "action" : "abortPhenotypingPlan",
          "description" : "Abort a phenotyping plan that has associated aborted phenotyping stage information",
          "triggeredByUser" : true,
          "available" : true,
          "note" : null,
          "nextStatus" : "Phenotyping Plan Aborted"
        } ],
        "actionToExecute" : null
      }
    }, {
      "pin" : "PIN:0000000004",
      "tpn" : "TPN:000000001",
      "attemptTypeName" : "adult and embryo phenotyping",
      "funderNames" : [ ],
      "workUnitName" : "BCM",
      "workGroupName" : "BaSH",
      "comment" : null,
      "phenotypingStartingPoint" : {
        "_links" : {
          "outcome" : {
            "href" : "http://localhost:8080/api/plans/PIN:0000000002/outcomes/TPO:000000000002"
          },
          "productionPlan" : {
            "href" : "http://localhost:8080/api/plans/PIN:0000000002"
          }
        },
        "outcomeTpo" : "TPO:000000000002",
        "productionPlanPin" : "PIN:0000000002"
      },
      "phenotypingAttemptResponse" : {
        "doNotCountTowardsCompleteness" : false,
        "phenotypingExternalRef" : "JR34077",
        "phenotypingBackgroundStrainName" : "C57BL/6NJ",
        "cohortProductionWorkUnitName" : "BCM"
      },
      "typeName" : "phenotyping",
      "statusName" : "Plan Created",
      "summaryStatusName" : "Plan Created",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000004"
        },
        "project" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2018-02-22T20:18:00.706639"
      } ],
      "summaryStatusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2020-04-14T12:46:24.706639"
      } ],
      "statusTransition" : {
        "currentStatus" : "Plan Created",
        "transitions" : [ {
          "action" : "abandonWhenCreated",
          "description" : "Abandon a phenotyping plan that has no associated phenotyping stage information",
          "triggeredByUser" : true,
          "available" : false,
          "note" : "The plan already has phenotyping stages. Please abort the plan.",
          "nextStatus" : "Plan Abandoned"
        }, {
          "action" : "abortPhenotypingPlan",
          "description" : "Abort a phenotyping plan that has associated aborted phenotyping stage information",
          "triggeredByUser" : true,
          "available" : true,
          "note" : null,
          "nextStatus" : "Phenotyping Plan Aborted"
        } ],
        "actionToExecute" : null
      }
    }, {
      "pin" : "PIN:0000000009",
      "tpn" : "TPN:000000001",
      "attemptTypeName" : "cre allele modification",
      "funderNames" : [ "KOMP" ],
      "workUnitName" : "BCM",
      "workGroupName" : "BaSH",
      "comment" : null,
      "creAlleleModificationStartingPoint" : {
        "_links" : {
          "outcome" : {
            "href" : "http://localhost:8080/api/plans/PIN:0000000002/outcomes/TPO:000000000001"
          },
          "productionPlan" : {
            "href" : "http://localhost:8080/api/plans/PIN:0000000002"
          }
        },
        "outcomeTpo" : "TPO:000000000001",
        "productionPlanPin" : "PIN:0000000002"
      },
      "creAlleleModificationAttempt" : {
        "modificationExternalRef" : "GSF-EPD0045_1_B11-3-1",
        "numberOfCreMatingsSuccessful" : 1,
        "tatCre" : false,
        "deleterStrainName" : "BALB/cJ"
      },
      "typeName" : "production",
      "statusName" : "Cre Excision Complete",
      "summaryStatusName" : "Cre Excision Complete",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000009"
        },
        "project" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2012-11-06T12:01:00"
      }, {
        "statusName" : "Mouse Allele Modification Registered",
        "date" : "2012-11-06T12:08:00"
      }, {
        "statusName" : "Cre Excision Started",
        "date" : "2013-02-02T12:42:00"
      }, {
        "statusName" : "Cre Excision Complete",
        "date" : "2013-04-09T12:42:00"
      } ],
      "summaryStatusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2012-11-06T12:01:00"
      }, {
        "statusName" : "Mouse Allele Modification Registered",
        "date" : "2012-11-06T12:08:00"
      }, {
        "statusName" : "Cre Excision Started",
        "date" : "2013-02-02T12:42:00"
      }, {
        "statusName" : "Cre Excision Complete",
        "date" : "2013-04-09T12:42:00"
      } ],
      "statusTransition" : {
        "currentStatus" : "Cre Excision Complete",
        "transitions" : [ {
          "action" : "updateToMouseAlleleModificationGenotypeConfirmed",
          "description" : "Update to Mouse Allele Modification Genotype Confirmed.",
          "triggeredByUser" : false,
          "available" : false,
          "note" : "A genotyped confirmed colony needs to be associated with the plan.",
          "nextStatus" : "Mouse Allele Modification Genotype Confirmed"
        }, {
          "action" : "abortWhenCreExcisionComplete",
          "description" : "Abort an allele modification plan when Cre excision is complete",
          "triggeredByUser" : true,
          "available" : false,
          "note" : "The plan has colonies that are not aborted. Please abort them first",
          "nextStatus" : "Mouse Allele Modification Aborted"
        } ],
        "actionToExecute" : null
      }
    }, {
      "pin" : "PIN:0000000010",
      "tpn" : "TPN:000000001",
      "attemptTypeName" : "es cell",
      "funderNames" : [ "KOMP" ],
      "workUnitName" : "BCM",
      "workGroupName" : "BaSH",
      "comment" : null,
      "esCellAttempt" : {
        "esCellName" : "EPD0045_1_A11",
        "miDate" : "2007-04-24",
        "experimental" : false,
        "comment" : "additional information",
        "blastStrainName" : "C57BL/6NJ",
        "totalBlastsInjected" : 44,
        "totalTransferred" : 44,
        "numberSurrogatesReceiving" : 0,
        "totalPupsBorn" : 25,
        "totalFemaleChimeras" : 5,
        "totalMaleChimeras" : 2,
        "totalChimeras" : 7,
        "numberOfMalesWith0To39PercentChimerism" : 1,
        "numberOfMalesWith40To79PercentChimerism" : 1,
        "numberOfMalesWith80To99PercentChimerism" : 0,
        "numberOfMalesWith100PercentChimerism" : 0,
        "testCrossStrainName" : "BALB/cJ",
        "dateChimerasMated" : "2007-06-18",
        "numberOfChimeraMatingsAttempted" : 6,
        "numberOfChimeraMatingsSuccessful" : 5,
        "numberOfChimerasWithGltFromCct" : 1,
        "numberOfChimerasWithGltFromGenotyping" : 1,
        "numberOfChimerasWith0To9PercentGlt" : 0,
        "numberOfChimerasWith10To49PercentGlt" : 1,
        "numberOfChimerasWith50To99PercentGlt" : 0,
        "numberOfChimerasWith100PercentGlt" : 0,
        "totalF1MiceFromMatings" : 52,
        "numberOfCctOffspring" : 3,
        "cassetteTransmissionVerified" : "2007-10-21",
        "numberOfHetOffspring" : 2,
        "numberOfLiveGltOffspring" : 0,
        "imitsMiAttemptId" : 2030,
        "attemptExternalRef" : "MAKE"
      },
      "typeName" : "production",
      "statusName" : "Chimeras/Founder Obtained",
      "summaryStatusName" : "Chimeras/Founder Obtained",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000010"
        },
        "project" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2007-04-24T00:00:00"
      }, {
        "statusName" : "Attempt In Progress",
        "date" : "2007-05-18T00:00:00"
      }, {
        "statusName" : "Chimeras/Founder Obtained",
        "date" : "2007-10-20T00:00:00"
      } ],
      "summaryStatusDates" : [ {
        "statusName" : "Chimeras/Founder Obtained",
        "date" : "2007-10-21T00:00:00"
      } ],
      "statusTransition" : {
        "currentStatus" : "Chimeras/Founder Obtained",
        "transitions" : [ {
          "action" : "abortWhenChimerasFounderObtained",
          "description" : "Abort the plan after a founder obtained",
          "triggeredByUser" : true,
          "available" : true,
          "note" : null,
          "nextStatus" : "Attempt Aborted"
        } ],
        "actionToExecute" : null
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans{?pin,tpn,workUnitName,workGroupName,statusName,summaryStatusName,typeName,attemptTypeName,imitsMiAttemptId,imitsPhenotypeAttemptId,phenotypingExternalRef,doNotCountTowardsCompleteness}",
      "templated" : true
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 6,
    "totalPages" : 1,
    "number" : 0
  }
}

6.3.3. Get filtered Plans

You can also add filters to the request to get more specific results.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans?statusName=Founder%20Obtained&attemptTypeName=crispr' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6Ilc1azZrak9ZVVdfa3dUUENubnYzcHciLCJpYXQiOjE2Mjg3NzcxMDMsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkwM30.J0XlAWWcFNGqgojNy0eenKyiAMOcMylI1CVQ_zVMzLjXgHFZWLX3lXvsfFgWTWY-mzGYkuG6-qRFfqmfvx0O_10I0s78It9k70TbfUpecPeF2LablGeY4MwFXobRVjMgOtl4fXCfDtrXfW7O2BkiXMhF2mLBuJkGAfn21AzwYelnUPIoI5qaAL5-bSXjooIbyO0Aj0QxC21iQBc9hP0wT9K3uxDPgajaIYdVCxsM0UzGtFYGi0bFwCXSG6y6vVVlue9TqvxpHpSgDuVV4NpEtsLuqzl7DpmPZ3czmtYTwi07Lk0guUrEtarA83bF-aHdsC9U1q8SIEGJbwcbESfpjQ'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Link:
Content-Type: application/hal+json
Content-Length: 8272

{
  "_embedded" : {
    "plans" : [ {
      "pin" : "PIN:0000000001",
      "tpn" : "TPN:000000001",
      "attemptTypeName" : "crispr",
      "funderNames" : [ "KOMP" ],
      "workUnitName" : "BCM",
      "workGroupName" : "BaSH",
      "comment" : null,
      "crisprAttempt" : {
        "miDate" : "2019-02-26",
        "experimental" : true,
        "comment" : "crispr plan comment",
        "mutagenesisExternalRef" : "MF-26326",
        "imitsMiAttemptId" : 20043,
        "attemptExternalRef" : null,
        "embryoTransferDay" : "Same Day",
        "totalTransferred" : 72,
        "nucleases" : [ {
          "id" : 1,
          "typeName" : "Cas9",
          "concentration" : 250.0,
          "className" : "protein"
        } ],
        "guides" : [ {
          "id" : 1,
          "sequence" : "CTTCACGTACCAAGGAGGGGTGG",
          "guideSequence" : "CTTCACGTACCAAGGAGGGG",
          "pam" : "AGG",
          "chr" : "X",
          "start" : 46245139,
          "stop" : 46245161,
          "strand" : "+",
          "genomeBuild" : "GRCm38",
          "grnaConcentration" : 300.0,
          "truncatedGuide" : true,
          "reversed" : false,
          "sangerService" : false,
          "formatName" : "sgRNA",
          "sourceName" : "commercial"
        } ],
        "mutagenesisDonors" : [ {
          "id" : 1,
          "concentration" : 5.0,
          "vectorName" : "pUC18_Ikzf2_conditional",
          "oligoSequenceFasta" : "ATAATTGGCAGCCTGATTAGAAGAATGCCCATCTTGTCTAGTGACACATTAGAACAATGAGTAATTGCTCGATGCGGATCCATAACTTCGTATAGCATACATTATACGAAGTTATTCTCTGGGATTAAGAAAAAACTAACATATGAAACAGAAGCCCAGACATCTAAAACCACAAAGA",
          "preparationTypeName" : "Circular"
        } ],
        "reagents" : [ {
          "id" : 1,
          "reagentName" : "Ligase IV",
          "reagentDescription" : "NHEJ Inhibitor",
          "concentration" : 334.0
        } ],
        "genotypePrimers" : [ {
          "id" : 1,
          "genomicStartCoordinate" : 1,
          "genomicEndCoordinate" : 200,
          "name" : "Gpr68wtR",
          "sequence" : "GTAGAGGGACAGGCAGTTGG"
        } ],
        "totalEmbryosInjected" : 72,
        "totalEmbryosSurvived" : 70,
        "embryo2Cell" : "20043",
        "assay" : {
          "id" : 1,
          "typeName" : "T7EN1",
          "numFounderPups" : 26,
          "numFounderSelectedForBreeding" : 1,
          "founderNumAssays" : 26,
          "numDeletionG0Mutants" : 1,
          "numG0WhereMutationDetected" : 1,
          "numHdrG0Mutants" : 1,
          "numHdrG0MutantsAllDonorsInserted" : 0,
          "numHdrG0MutantsSubsetDonorsInserted" : 0,
          "numHrG0Mutants" : 0,
          "numNhejG0Mutants" : 0
        },
        "strainInjectedName" : "C57BL/6NJ"
      },
      "typeName" : "production",
      "statusName" : "Founder Obtained",
      "summaryStatusName" : "Founder Obtained",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001"
        },
        "project" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2018-01-15T00:00:00.706639"
      }, {
        "statusName" : "Attempt In Progress",
        "date" : "2018-01-16T00:00:00.706639"
      }, {
        "statusName" : "Founder Obtained",
        "date" : "2018-02-22T20:18:00.706639"
      }, {
        "statusName" : "Embryos Obtained",
        "date" : "2018-04-04T14:32:00.706639"
      } ],
      "summaryStatusDates" : [ {
        "statusName" : "Founder Obtained",
        "date" : "2019-08-06T20:09:51.706639"
      } ],
      "statusTransition" : {
        "currentStatus" : "Founder Obtained",
        "transitions" : [ {
          "action" : "abortWhenFounderObtained",
          "description" : "Abort the plan after a founder obtained",
          "triggeredByUser" : true,
          "available" : true,
          "note" : null,
          "nextStatus" : "Attempt Aborted"
        } ],
        "actionToExecute" : null
      }
    }, {
      "pin" : "PIN:0000000002",
      "tpn" : "TPN:000000001",
      "attemptTypeName" : "crispr",
      "funderNames" : [ ],
      "workUnitName" : "BCM",
      "workGroupName" : "BaSH",
      "comment" : null,
      "crisprAttempt" : {
        "miDate" : "2018-03-26",
        "experimental" : false,
        "comment" : "crispr plan comment",
        "mutagenesisExternalRef" : "MF-26328",
        "imitsMiAttemptId" : 20044,
        "attemptExternalRef" : null,
        "embryoTransferDay" : "Same Day",
        "totalTransferred" : 72,
        "nucleases" : [ {
          "id" : 2,
          "typeName" : "Cas9",
          "concentration" : 250.0,
          "className" : "protein"
        } ],
        "guides" : [ {
          "id" : 2,
          "sequence" : "CCATGATCTAATCTGTGGTTAAA",
          "guideSequence" : "CCATGATCTAATCTGTGGTTAAA",
          "pam" : "AAA",
          "chr" : "14",
          "start" : 56912859,
          "stop" : 56912881,
          "strand" : "+",
          "genomeBuild" : "GRCm38",
          "grnaConcentration" : 300.0,
          "truncatedGuide" : false,
          "reversed" : false,
          "sangerService" : false,
          "formatName" : "cr-tracrRNA",
          "sourceName" : "in-house"
        } ],
        "mutagenesisDonors" : [ {
          "id" : 2,
          "concentration" : 5.0,
          "vectorName" : "pUC18_Ikzf2_conditional",
          "oligoSequenceFasta" : "ATAATTGGCAGCCTGATTAGAAGAATGCCCATCTTGTCTAGTGACACATTAGAACAATGAGTAATTGCTCGATGCGGATCCATAACTTCGTATAGCATACATTATACGAAGTTATTCTCTGGGATTAAGAAAAAACTAACATATGAAACAGAAGCCCAGACATCTAAAACCACAAAGA",
          "preparationTypeName" : "Circular"
        } ],
        "reagents" : [ {
          "id" : 2,
          "reagentName" : "Xrcc5",
          "reagentDescription" : "NHEJ Inhibitor",
          "concentration" : 334.0
        } ],
        "genotypePrimers" : [ {
          "id" : 2,
          "genomicStartCoordinate" : 1,
          "genomicEndCoordinate" : 200,
          "name" : "Gpr68wtR",
          "sequence" : "GTAGAGGGACAGGCAGTTGG"
        } ],
        "totalEmbryosInjected" : 70,
        "totalEmbryosSurvived" : 64,
        "embryo2Cell" : "20044",
        "assay" : {
          "id" : 2,
          "typeName" : "LOA",
          "numFounderPups" : 26,
          "numFounderSelectedForBreeding" : 1,
          "founderNumAssays" : 26,
          "numDeletionG0Mutants" : 1,
          "numG0WhereMutationDetected" : 1,
          "numHdrG0Mutants" : 1,
          "numHdrG0MutantsAllDonorsInserted" : 0,
          "numHdrG0MutantsSubsetDonorsInserted" : 0,
          "numHrG0Mutants" : 0,
          "numNhejG0Mutants" : 0
        },
        "strainInjectedName" : "C57BL/6NJ"
      },
      "typeName" : "production",
      "statusName" : "Founder Obtained",
      "summaryStatusName" : "Plan Created",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000002"
        },
        "project" : {
          "href" : "http://localhost:8080/api/projects/TPN:000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2020-04-14T12:46:24.706639"
      } ],
      "summaryStatusDates" : [ {
        "statusName" : "Plan Created",
        "date" : "2020-04-14T12:46:24.706639"
      } ],
      "statusTransition" : {
        "currentStatus" : "Founder Obtained",
        "transitions" : [ {
          "action" : "abortWhenFounderObtained",
          "description" : "Abort the plan after a founder obtained",
          "triggeredByUser" : true,
          "available" : false,
          "note" : "The plan has colonies that are not aborted. Please abort them first",
          "nextStatus" : "Attempt Aborted"
        } ],
        "actionToExecute" : null
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans?statusName=Founder%20Obtained&attemptTypeName=crispr{&pin,tpn,workUnitName,workGroupName,summaryStatusName,typeName,imitsMiAttemptId,imitsPhenotypeAttemptId,phenotypingExternalRef,doNotCountTowardsCompleteness}",
      "templated" : true
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}

6.3.4. Get the history of changes for a plan

You can use this endpoint to see all the changes that have been made on a plan.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000002/history' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IkFxeWs5bm1JNm15ZFNLOHd3SE9HaFEiLCJpYXQiOjE2Mjg3NzcxMTEsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxMX0.JoMzo9Id4kRbzVfDrLbL-c7KPMnhZvyMrWIa0_E7DT2Re5krB_cmFLZOJxaUdyqyiyeDkzvLVMpReI07v-nheQKJvsLl0KS3CKFcLAJ09WeMV2h6K205WNUPMAeaajYNPd7SaY2nhZmvEGuwCBwyO530Jl_eRKlRgalXXPprYrebnxd0lY1RyprI7q0_VVNm019nPjGQNy9NUe4euOQOauFFhQ_Hq2anEJXTjhtsVdAc2r7SNnDBBQCysZhM45q0QZ-SD_w2Cn_J5ThiYE7v6gy3tmmUc9Q9cA6HWmtyQgUauFsSAZCZpqScGZj_Hud0V4xWxcQdEAlAOn12znrTYQ'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 276

[ {
  "id" : 1,
  "user" : "gentar_test_user1@gentar.org",
  "date" : "2020-06-17T15:08:56.643268",
  "comment" : "Plan updated",
  "details" : [ {
    "field" : "comment",
    "oldValue" : "comment",
    "newValue" : "New Plan comment",
    "note" : "Field changed"
  } ]
} ]

6.4. POST

6.4.1. Create a crispr plan

Example Request

Curl:

POST /api/plans HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IjVWOGQyQkZDREFORGJnNzdWVldTVHciLCJpYXQiOjE2Mjg3NzcxMDgsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkwOH0.G_a01aWxgg5YZm3Fb0-WZcFnVrM35Yy6U1PaE7ws9pVR1v4NAgrfsHdCIAyTiHT_iR8EUDrE8iSNgwmdTNhDXDdcc-AvKzRJ9eMyty7zWcjnE-SOUvJPL28s8WN3hLY8h4NsCbXljBkiL1RWNwZgzE1AocDp6zD1bbFENkfX7aSxPA8D89vLjtUGIm5VsexqAHRjQPtr8Ldv9yTLa5pR69jew5-bCM2RP2aVWhudfcsJcCVGTUrXMsZMmnUpcjOR7NI7i00pit_BkyQyyBeB1j6QINgpjafob1hY2nNs4FZbRzLb3MuQ_3xInjPdG4dFgBWWfz-1aj47J9lNK_Dn3A
Content-Length: 2291
Host: localhost:8080

{
  "tpn" : "TPN:000000001",
  "attemptTypeName" : "crispr",
  "funderNames" : [ "KOMP" ],
  "workUnitName" : "BCM",
  "workGroupName" : "BaSH",
  "comment" : "example of crispr plan creation",
  "crisprAttempt" : {
    "miDate" : "2019-02-26",
    "experimental" : true,
    "comment" : "crispr plan comment",
    "mutagenesisExternalRef" : "MF-26326",
    "imitsMiAttemptId" : 20043,
    "attemptExternalRef" : "attempt external reference",
    "embryoTransferDay" : "Same Day",
    "totalTransferred" : 72,
    "nucleases" : [ {
      "typeName" : "Cas9",
      "concentration" : 250.0,
      "className" : "protein"
    } ],
    "guides" : [ {
      "chr" : "X",
      "start" : 46245139,
      "stop" : 46245161,
      "grnaConcentration" : 300.0,
      "sequence" : "CTTCACGTACCAAGGAGGGGTGG",
      "truncatedGuide" : true,
      "strand" : "+",
      "genomeBuild" : "GRCm38",
      "pam" : "TGG",
      "guideSequence" : "CTTCACGTACCAAGGAGGGG",
      "formatName" : "sgRNA",
      "sourceName" : "commercial"
    } ],
    "mutagenesisDonors" : [ {
      "concentration" : 5.0,
      "vectorName" : "pUC18_Ikzf2_conditional",
      "oligoSequenceFasta" : "ATAATTGGCAGCCTGATTAGAAGAATGCCCATCTTGTCTAGTGACACATTAGAACAATGAGTAATTGCTCGATGCGGATCCATAACTTCGTATAGCATACATTATACGAAGTTATTCTCTGGGATTAAGAAAAAACTAACATATGAAACAGAAGCCCAGACATCTAAAACCACAAAGA",
      "preparationTypeName" : "Circular"
    } ],
    "reagents" : [ {
      "reagentName" : "Ligase IV",
      "reagentDescription" : "NHEJ Inhibitor",
      "concentration" : 334.0
    } ],
    "genotypePrimers" : [ {
      "genomicStartCoordinate" : 1,
      "genomicEndCoordinate" : 200,
      "name" : "Gpr68wtR",
      "sequence" : "GTAGAGGGACAGGCAGTTGG"
    } ],
    "totalEmbryosInjected" : 72,
    "totalEmbryosSurvived" : 70,
    "embryo2Cell" : "20043",
    "assay" : {
      "typeName" : "T7EN1",
      "numFounderPups" : 26,
      "numFounderSelectedForBreeding" : 1,
      "founderNumAssays" : 26,
      "numDeletionG0Mutants" : 1,
      "numG0WhereMutationDetected" : 1,
      "numHdrG0Mutants" : 1,
      "numHdrG0MutantsAllDonorsInserted" : 0,
      "numHdrG0MutantsSubsetDonorsInserted" : 0,
      "numHrG0Mutants" : 0,
      "numNhejG0Mutants" : 0
    },
    "strainInjectedName" : "C57BL/6NJ"
  },
  "typeName" : "production"
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 286

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000013"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:09.330736",
    "comment" : "Plan created",
    "details" : [ ]
  } ]
}

6.4.2. Create a phenotyping plan

Example Request

Curl:

POST /api/plans/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6InotWUJ5NTd3OXRFYlhhVXZQdmJhOEEiLCJpYXQiOjE2Mjg3NzcxMDUsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkwNX0.PaS-t9g-hueEt9NpHtMEz_mNmQHbI5RB5B2HhRFjNgI2APHsdj0-DgtCl2Jf57cX3WLljKLCvM_OyfQa__Q-bsTWgbdZ9A6Cg73Bt9yQmO6wMxTVHrHaaRLkU8x2d5AEY6NUeR7dMhCMFSXskYXnfsQz52d9WvN_jnVJ9YP_9GJd0LbnntxIO-kBVld3E63uWJX28FXB6LgQRi8H7B4SvpMIletJ_VM9HIkt8E_h11tFfGID0QiudCQ3qEeLHTqdPv11tnxCUQFn7IPWoCCrC4wNDBGWc4re1sKkHkqjotBRTzZaBtYkU1tI5O1HEPQGRPq2yDyNRuuKzxklYlWRgA
Content-Length: 500
Host: localhost:8080

{
  "tpn" : "TPN:000000001",
  "funderNames" : [ ],
  "workUnitName" : "UCD",
  "workGroupName" : "DTCC",
  "comment" : null,
  "attemptTypeName" : "adult and embryo phenotyping",
  "typeName" : "phenotyping",
  "phenotypingStartingPoint" : {
    "outcomeTpo" : "TPO:000000000001"
  },
  "phenotypingAttempt" : {
    "phenotypingExternalRef" : "CR1234",
    "phenotypingBackgroundStrainName" : "C57BL/6NJ",
    "doNotCountTowardsCompleteness" : false,
    "cohortProductionWorkUnitName" : "UCD"
  }
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 286

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000012"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:06.273363",
    "comment" : "Plan created",
    "details" : [ ]
  } ]
}

6.5. PUT

You can update some information in a plan if you as a user are related to any of the work units associated with the plan.

The only fields that can be modified are the ones shown in "Example Request". The exception are pin and tpn, which are there just as a reference to the object that is being modified (they are not mandatory).

If a value is provided for pin, the system will validate that it matches the pin in the URL parameter.

6.5.1. Update a crispr plan

Example Request

Curl:

PUT /api/plans/PIN:0000000001 HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IlVkNUpfOGxXbkpiQU9qdkdOaXdaaXciLCJpYXQiOjE2Mjg3NzcxMTIsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxMn0.LXRgONNS-dCsa9ncT7vNMCOCB4FUgEiKuu7HeLTIFv3KJmGfvrhpfY_3tFf43dPPUyXb1kMClsp5zVdn7OWrJ3h07eVMNq7SoPKsYZsFpPg3Ep4nqNQE-s50iULb7mkfIo6C55o61pWKNCF4QOxdy1emmrja-v8t4IlEHWkAwrvkKbXmFoRg2ZxJdMirRvCRsAB2pD-CBey2i70cIc9is6H0V_61lWdCfEnPd00w2ipYSNtbQ66i_mdkknIHjHtuZ8byAjckPGvTyPV8w9lQDA6_vmjOV48gDFBsWI2VOj7gAyHT12ZuX8SJ8fcr4JdZeNojpFeRHQI3_EYuCUvDqA
Content-Length: 559
Host: localhost:8080

{
  "pin" : "PIN:0000000001",
  "tpn" : "TPN:000000001",
  "funderNames" : [ "KOMP" ],
  "workUnitName" : "BCM",
  "workGroupName" : "BaSH",
  "comment" : "New Plan comment",
  "statusTransition" : {
    "currentStatus" : "Founder Obtained",
    "transitions" : [ {
      "action" : "abortWhenFounderObtained",
      "description" : "Abort the plan after a founder obtained",
      "triggeredByUser" : true,
      "available" : true,
      "note" : null,
      "nextStatus" : "Attempt Aborted"
    } ],
    "actionToExecute" : "abortWhenFounderObtained"
  }
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 719

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:12.082772",
    "comment" : "Plan updated",
    "details" : [ {
      "field" : "comment",
      "oldValue" : null,
      "newValue" : "New Plan comment",
      "note" : "Field changed"
    }, {
      "field" : "status.name",
      "oldValue" : "Founder Obtained",
      "newValue" : "Attempt Aborted",
      "note" : "Field changed"
    }, {
      "field" : "summaryStatus.name",
      "oldValue" : "Founder Obtained",
      "newValue" : "Attempt Aborted",
      "note" : "Field changed"
    } ]
  } ]
}

6.5.2. Update a phenotyping plan

Example Request

Curl:

PUT /api/plans/PIN:0000000003 HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6Ilh0US1qYmhTR1pibDhFbkR4ZHFCN3ciLCJpYXQiOjE2Mjg3NzcxMTAsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxMH0.TrdWBPgFEt8F9MtMh24HfD1sEI7nEmo2ExUcC4ufP3DCgCJj_RQyCGbmqUAaPLpwIkSvTaiGOCIZ0p1Y4w_-PDh2IVX4Xx3SAPFzKaGQmm_wVIKX7KsABvEZoWS0SVZoZlyvJDNxZq8O4j0ovP6-Mf_BHMviS2wthInBCqTnGGKrCvr7YRzXl05bbk9500gEQebCmTUuq1w7fcznkyRxFOV7lP6mgGg91ixCVvCnyAdshAn5b0Z55tHskFvzI38g7R5T7kS1bNS7SkFQMBelTJLJTqRMPmGkVPIBiK4C56pAkQ_nxA-nURBIHawoSi_jvpjNGNmBkZoo-Tz46Njebw
Content-Length: 487
Host: localhost:8080

{
  "pin" : "PIN:0000000003",
  "tpn" : "TPN:000000001",
  "attemptTypeName" : "adult and embryo phenotyping",
  "funderNames" : [ ],
  "workUnitName" : "BCM",
  "workGroupName" : "BaSH",
  "comment" : "New Plan comment",
  "typeName" : "phenotyping",
  "phenotypingExternalRef" : "CR10129",
  "doNotCountTowardsCompleteness" : false,
  "phenotypingBackgroundStrainName" : "C57BL/6NJ",
  "cohortProductionWorkUnitName" : "BCM",
  "statusTransition" : {
    "actionToExecute" : null
  }
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 416

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000003"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:10.825215",
    "comment" : "Plan updated",
    "details" : [ {
      "field" : "comment",
      "oldValue" : null,
      "newValue" : "New Plan comment",
      "note" : "Field changed"
    } ]
  } ]
}

7. Outcomes

This section describes the REST endpoints for outcomes in the system.

An outcome can be either a colony or a specimen.

7.1. Fields

These are the fields you are going to see in the body of a request in a GET or in the payload for POST or PUT operations.

7.1.1. Colony

Path Type Description

pin

String

Public identifier for the plan.

tpo

String

Public identifier for the outcome.

outcomeTypeName

String

Outcome type.

_links.mutations[].href

String

Mutation associated with the outcome.

_links.self.href

String

Link to the outcome.

colony

Object

Colony information.

colony.name

String

Name of the colony. It needs to be unique.

colony.genotypingComment

String

Comment about the genotyping.

colony.statusName

String

Current status of the colony.

colony.backgroundStrainName

String

Name of the background strain used for the colony.

colony.statusDates[]

Array

Stamps of the statuses the colony has gone through.

colony.statusDates[].statusName

String

Status that the colony had on a specific date.

colony.statusDates[].date

String

Date of the status change.

colony.distributionProducts[]

Array

Distribution products associated with the colony.

colony.distributionProducts[].id

Number

Id for the record in the system.

colony.distributionProducts[].distributionCentreName

String

Centre for the distribution product.

colony.distributionProducts[].productTypeName

String

Product type name.

colony.distributionProducts[].distributionNetworkName

String

Distribution Network name.

colony.distributionProducts[].startDate

String

Start date of the distribution product.

colony.distributionProducts[].endDate

String

End date of the distribution product.

colony.statusTransition

Object

Information about the current state in the state machine for the plan.

colony.statusTransition.currentStatus

String

Current status in the plan

colony.statusTransition.transitions[]

Array

Transitions in the state machine given the current state.

colony.statusTransition.transitions[].action

String

Action or transition’s name.

colony.statusTransition.transitions[].description

String

Transition’s description.

colony.statusTransition.transitions[].triggeredByUser

Boolean

Indicates whether the transition is executed by the user or by the system.

colony.statusTransition.transitions[].available

Boolean

Indicates if the transition can be executed at the moment.

colony.statusTransition.transitions[].note

Null

Additional explanation about the availability to execute the transition.

colony.statusTransition.transitions[].nextStatus

String

Next status that the plan will have if the transition is executed.

colony.statusTransition.actionToExecute

Null

Name of the transition (action) to execute.

7.1.2. Specimen

Path Type Description

pin

String

Public identifier for the plan.

tpo

String

Public identifier for the outcome.

outcomeTypeName

String

Outcome type.

_links.mutations[].href

String

Mutation associated with the outcome.

_links.self.href

String

Link to the outcome.

specimen

Object

Specimen information.

specimen.backgroundStrainName

String

Name of the strain associated with the specimen.

specimen.specimenExternalRef

String

External reference for the specimen.

specimen.specimenTypeName

String

Specimen type name. Currently only haplo-essential

specimen.statusName

String

Current status of the specimen

specimen.statusDates[]

Array

Stamps of the statuses the specimen has gone through.

specimen.statusDates[].statusName

String

Status that the specimen had on a specific date.

specimen.statusDates[].date

String

Date of the status change.

specimen.specimenProperties[]

Array

Additional values for the specimen.

specimen.specimenProperties[].id

Number

Id of the record in the system.

specimen.specimenProperties[].propertyTypeName

String

Name of the property.

specimen.specimenProperties[].value

String

Value of the property.

specimen.statusTransition

Object

Information about the current state in the state machine for the plan.

specimen.statusTransition.currentStatus

String

Current status in the plan

specimen.statusTransition.transitions[]

Array

Transitions in the state machine given the current state.

specimen.statusTransition.transitions[].action

String

Action or transition’s name.

specimen.statusTransition.transitions[].description

String

Transition’s description.

specimen.statusTransition.transitions[].triggeredByUser

Boolean

Indicates whether the transition is executed by the user or by the system.

specimen.statusTransition.transitions[].available

Boolean

Indicates if the transition can be executed at the moment.

specimen.statusTransition.transitions[].note

String

Additional explanation about the availability to execute the transition.

specimen.statusTransition.transitions[].nextStatus

String

Next status that the plan will have if the transition is executed.

specimen.statusTransition.actionToExecute

Null

Name of the transition (action) to execute.

7.2. GET

7.2.1. Get a specific outcome (Colony)

This endpoint a specific outcome belonging to a plan. In this example the outcome is a colony.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000001' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6ImhIaGVfWUZ6aFR2MXBNS05lU2RwSUEiLCJpYXQiOjE2Mjg3NzcxMTgsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxOH0.BPvNnoauldCk1GdcUJdNtZRnnXCdPDC8_GTCpqTCvN--iXSFkN5dP8rrSKSbhB5a1bs2Hs4qVvDgMUCgMmLLYkfm1oqJzn-wS4X_YBeTrB7hIvGMxVmMLp-CFxjUV6fOP8rE5JCNXuKw2JCqC0YqCPv9rHqktdTixgbCxs1CgUJkZlE0jIH0wkNewi0qZlt5ip6Q6D0wnO7oaOhiLr-Gxn6ZP6AE3XfJP2GHBPnhkfoZ9X13xaWhDA4EBD2TEeSndPgSu-VMUt63zqiKlGprAN3nMd5RHE9MZl2BPSmXEhlzEpf0vdHxNumASh26pQ97HsYjC-yco_G9kCw-2y9oZA'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 1891

{
  "pin" : "PIN:0000000001",
  "tpo" : "TPO:000000000001",
  "outcomeTypeName" : "Colony",
  "colony" : {
    "name" : "jr34293",
    "genotypingComment" : "An example comment for the genotyping.",
    "statusName" : "Genotype In Progress",
    "statusDates" : [ {
      "statusName" : "Genotype In Progress",
      "date" : "2019-08-06T20:09:51.896778"
    } ],
    "backgroundStrainName" : "C57BL/6NJ",
    "distributionProducts" : [ {
      "id" : 1,
      "distributionCentreName" : "BCM",
      "productTypeName" : "Live mice",
      "distributionNetworkName" : "MMRRC",
      "startDate" : "2018-04-19",
      "endDate" : "2018-11-09"
    } ],
    "statusTransition" : {
      "currentStatus" : "Genotype In Progress",
      "transitions" : [ {
        "action" : "confirmGenotypeWhenInProgress",
        "description" : "Confirm Genotype when Genotype In Progress",
        "triggeredByUser" : true,
        "available" : true,
        "note" : null,
        "nextStatus" : "Genotype Confirmed"
      }, {
        "action" : "updateFromGenotypeInProgressToGenotypeNotConfirmed",
        "description" : "Update from Genotype In Progress to Genotype Not Confirmed",
        "triggeredByUser" : true,
        "available" : true,
        "note" : null,
        "nextStatus" : "Genotype Not Confirmed"
      }, {
        "action" : "abortGenotypeInProgress",
        "description" : "Abort a colony that is Genotype In Progress",
        "triggeredByUser" : true,
        "available" : true,
        "note" : null,
        "nextStatus" : "Colony Aborted"
      } ],
      "actionToExecute" : null
    }
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000001"
    },
    "mutations" : [ {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000001/mutations/MIN:000000000001"
    } ]
  }
}

7.2.2. Get a specific outcome (Specimen)

This endpoint a specific outcome belonging to a plan. In this example the outcome is a colony.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000004' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6InZRMFRwMUI5TG1HUHRndVBPbFIwSFEiLCJpYXQiOjE2Mjg3NzcxMTcsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxN30.jt5z9SPA5Y3rPTF-yLWl3ckMUdSZ3gx9VfLXRCeIbomuZp4RKnl0AaFSRMxj2ecoU1hSxcKNKNkrnCbJOV7GATVbkUd2D89i2a5Xt0s8yp-IxytSKetMZ-Y5kQ1KWgKeNi0VQr2ls3E104XMOfSCJdM0-6NXuEik0Bu2d1aIkgPiSvJMLPyKRjgrlpsLPxEuqASvdmWLlHc88ytG3FCuLvlGuGO-cSugMYJ2vLl6jCo_aEhCX9b_w7_SjoIXwIBToQdDTf6p50nY3_2hZVgTGs-6wSm9ew25FpNXrABUXc80185-77Ey6T1iGxTxODg7BCYgz6GMFTmNETZbx8HmJA'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 1258

{
  "pin" : "PIN:0000000001",
  "tpo" : "TPO:000000000004",
  "outcomeTypeName" : "Specimen",
  "specimen" : {
    "specimenExternalRef" : "External reference",
    "specimenTypeName" : "haplo-essential",
    "statusName" : "Specimen Group In Progress",
    "statusDates" : [ {
      "statusName" : "Specimen Group In Progress",
      "date" : "2019-08-06T20:09:51.896778"
    } ],
    "backgroundStrainName" : "C57BL/6NJ",
    "specimenProperties" : [ {
      "id" : 1,
      "propertyTypeName" : "Property 1",
      "value" : "Value 1"
    } ],
    "statusTransition" : {
      "currentStatus" : "Specimen Group In Progress",
      "transitions" : [ {
        "action" : "abortSpecimenGroup",
        "description" : "Abort a specimen group",
        "triggeredByUser" : true,
        "available" : false,
        "note" : "Specimen cannot be aborted [Not implemented yet.]",
        "nextStatus" : "Specimen Group Aborted"
      } ],
      "actionToExecute" : null
    }
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000004"
    },
    "mutations" : [ {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000004/mutations/MIN:000000000001"
    } ]
  }
}

7.2.3. Get all outcomes in a plan

This endpoint shows all the outcomes associated to a plan.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/outcomes' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6Ikg3QTU3Y0VaU1B5WnFJWVk0MEEzQmciLCJpYXQiOjE2Mjg3NzcxMTYsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxNn0.DU_Pt08cpxp4kHix-l3RBCZCws55uE9r2oqagqWM0-FPu_A7oHyczFGATHy1DMIZqXFv9iGEXb8C-PI66m12eluZCej4Q3Eba9LCIlAKClvb7ZryMJl2h5n4cHNCBvhiVeyeAwFYLCXVPQnVin7Be2I4WI-K8LwUwNYIE4FKCrlN8KK9gAcFrMnOYSsogwzZyM6eM4UBceSqW9dFXrUe38t-DwdLzQd1gwc1ernOH6FK8vOcVGXI7w5-sOp-VjccQYSSEIfEJZJd_9KE46VU8k9_A8eZsnaf4NZofgDXPZUY6zc9_1SH9JnrK6y8XJLAhMFKF1H9P6-jlsVOr48Jow'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 4363

{
  "_embedded" : {
    "outcomes" : [ {
      "pin" : "PIN:0000000001",
      "tpo" : "TPO:000000000004",
      "outcomeTypeName" : "Specimen",
      "specimen" : {
        "specimenExternalRef" : "External reference",
        "specimenTypeName" : "haplo-essential",
        "statusName" : "Specimen Group In Progress",
        "statusDates" : [ {
          "statusName" : "Specimen Group In Progress",
          "date" : "2019-08-06T20:09:51.896778"
        } ],
        "backgroundStrainName" : "C57BL/6NJ",
        "specimenProperties" : [ {
          "id" : 1,
          "propertyTypeName" : "Property 1",
          "value" : "Value 1"
        } ],
        "statusTransition" : {
          "currentStatus" : "Specimen Group In Progress",
          "transitions" : [ {
            "action" : "abortSpecimenGroup",
            "description" : "Abort a specimen group",
            "triggeredByUser" : true,
            "available" : false,
            "note" : "Specimen cannot be aborted [Not implemented yet.]",
            "nextStatus" : "Specimen Group Aborted"
          } ],
          "actionToExecute" : null
        }
      },
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000004"
        },
        "mutations" : [ {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000004/mutations/MIN:000000000001"
        } ]
      }
    }, {
      "pin" : "PIN:0000000001",
      "tpo" : "TPO:000000000001",
      "outcomeTypeName" : "Colony",
      "colony" : {
        "name" : "jr34293",
        "genotypingComment" : "An example comment for the genotyping.",
        "statusName" : "Genotype In Progress",
        "statusDates" : [ {
          "statusName" : "Genotype In Progress",
          "date" : "2019-08-06T20:09:51.896778"
        } ],
        "backgroundStrainName" : "C57BL/6NJ",
        "distributionProducts" : [ {
          "id" : 1,
          "distributionCentreName" : "BCM",
          "productTypeName" : "Live mice",
          "distributionNetworkName" : "MMRRC",
          "startDate" : "2018-04-19",
          "endDate" : "2018-11-09"
        } ],
        "statusTransition" : {
          "currentStatus" : "Genotype In Progress",
          "transitions" : [ {
            "action" : "confirmGenotypeWhenInProgress",
            "description" : "Confirm Genotype when Genotype In Progress",
            "triggeredByUser" : true,
            "available" : true,
            "note" : null,
            "nextStatus" : "Genotype Confirmed"
          }, {
            "action" : "updateFromGenotypeInProgressToGenotypeNotConfirmed",
            "description" : "Update from Genotype In Progress to Genotype Not Confirmed",
            "triggeredByUser" : true,
            "available" : true,
            "note" : null,
            "nextStatus" : "Genotype Not Confirmed"
          }, {
            "action" : "abortGenotypeInProgress",
            "description" : "Abort a colony that is Genotype In Progress",
            "triggeredByUser" : true,
            "available" : true,
            "note" : null,
            "nextStatus" : "Colony Aborted"
          } ],
          "actionToExecute" : null
        }
      },
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000001"
        },
        "mutations" : [ {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000001/mutations/MIN:000000000001"
        } ]
      }
    }, {
      "pin" : "PIN:0000000001",
      "tpo" : "TPO:000000000002",
      "outcomeTypeName" : "Colony",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000002"
        }
      }
    }, {
      "pin" : "PIN:0000000001",
      "tpo" : "TPO:000000000003",
      "outcomeTypeName" : "Specimen",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000003"
        }
      }
    }, {
      "pin" : "PIN:0000000001",
      "tpo" : "TPO:000000000005",
      "outcomeTypeName" : "Colony",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000005"
        }
      }
    } ]
  }
}

7.2.4. Get the history of changes for an outcome

You can use this endpoint to see all the changes that have been made on an outcome.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000002/history' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IjlIUnp3Rmh3XzVtQWFNMzdXYkItV3ciLCJpYXQiOjE2Mjg3NzcxMTcsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxN30.KJOG5Ig8wSiSKfeqDjW-gbWJH64H4o3ocgFKTGpbuTSknv5QDCVFR06ABNw14RZl5QtCzhnHFaiFtwkDPDKSNMGeqJyfvkLizcBoFomLXS03RpXOT0sO57ZZHKU8qx8xBRXhB1RYP2bT0PXae5K7UbiUwLQ1mUWU-djROQAkELeGaFlv5zdxBaq_it_qZPa8rPzL8WJABLVo3Jk4luLXUHzFGTpLFwaG7aIZBi214fFwmcy4FZYUp93CbRuOnNotZDMQyBlYriKVUDdfvzny0KcBYeL3mKEax7SpIY0HKBz5gIecsoWbvejSb9cZiYN3jhvtlGOqTCiv9QrN_ZIPnA'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 307

[ {
  "id" : 1,
  "user" : "gentar_test_user1@gentar.org",
  "date" : "2020-06-17T15:08:56.643268",
  "comment" : "Outcome updated",
  "details" : [ {
    "field" : "colony.genotypingComment",
    "oldValue" : "Comment version 1",
    "newValue" : "Comment version 2",
    "note" : "Field changed"
  } ]
} ]

7.3. POST

7.3.1. Create an outcome (colony)

Example Request

Curl:

POST /api/plans/PIN:0000000001/outcomes HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6InJUMlhfY0NIdFJCYW96LXpuQ3NnZnciLCJpYXQiOjE2Mjg3NzcxMTUsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxNX0.LRF5wqFA4AJ80si2S10os-Vvn3TvJ284XMtHgzCCD_epQa_nACPlC-Q4bSz08NcVNQbvyYeoIgMmQO71L7IMULrsyuCAW7IbzZiiZHxWLBopq9HYWcGG9g-Jw2K7i-8f3vRAzsiEgwcOAkNFVzVIcYyhuAuoQvAHiGWKnsGiRvZA8aievPVpnI_8HUHHSJr4kTRpImxZs82x8wzzfNODqRXccdbxhLSYZP85KMTCDj8zONp_gVDpqtEVFyusYKfZDRATiRJqasK3GH6BVYeccyTc0_eB1hAk7gSCDquRHnE93RVXql2ziU9kVwkyjWKI9EX7piNADRJyHh99jpo5dw
Content-Length: 1237
Host: localhost:8080

{
  "pin" : "PIN:0000000001",
  "outcomeTypeName" : "Colony",
  "colony" : {
    "name" : "jr34077",
    "genotypingComment" : "genotyping comment",
    "backgroundStrainName" : "C57BL/6NJ",
    "distributionProducts" : [ {
      "id" : null,
      "distributionCentreName" : "BCM",
      "productTypeName" : "Live mice",
      "distributionNetworkName" : "MMRRC",
      "startDate" : "2020-06-08T15:49:52.0353",
      "endDate" : "2020-07-09T15:49:47.0311"
    } ]
  },
  "mutations" : [ {
    "mgiAlleleSymbolWithoutImpcAbbreviation" : false,
    "mgiAlleleSymbolRequiresConstruction" : true,
    "geneticMutationTypeName" : "Not Tested",
    "molecularMutationTypeName" : "Deletion",
    "alleleConfirmed" : false,
    "mutationQcResults" : [ ],
    "genes" : [ {
      "symbol" : "Serpinb10"
    } ],
    "mutationSequences" : [ {
      "sequence" : {
        "sequence" : "TCTAAAAGGNACAGTTGGTGACTGCAGCTTAAACTCTGAGTGCAGCAGG",
        "typeName" : "partial",
        "categoryName" : "intention target sequence"
      },
      "index" : 1
    } ],
    "description" : "",
    "mutationCategorizations" : [ {
      "name" : "NHEJ",
      "description" : "non-homology end-joining",
      "typeName" : "repair_mechanism"
    } ]
  } ]
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 479

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000007"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:15.73783",
    "comment" : "Mutation created",
    "details" : [ ]
  }, {
    "id" : 2,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:15.738413",
    "comment" : "Outcome created",
    "details" : [ ]
  } ]
}

7.4. PUT

7.4.1. Update an outcome (colony)

Example Request

Curl:

PUT /api/plans/PIN:0000000001/outcomes/TPO:000000000001 HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6InpyZmJ5dHV1STd4TlZNSFcwbU1PaGciLCJpYXQiOjE2Mjg3NzcxMTYsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxNn0.giLs_8KcJ319x0IeSRdtMfGdmBjcxaW5E9Fw_yWSWbuEhUWG4Ca4NQn9YPfguU6pncq8Yi1bfvDgFCvseIjpzERyKTD01FgbzR4T1VKt0INCb-VmmCpPeUZz7EA8lpLkvWMllu6woLVOcjZz0fVUuytGZPs79q4uWhXL2oDLO3wAgOGRnE5yYNKYBlSx4o6dRvl9R1M9eQgwL6hHoCWjw2X3YmdEKYHwBSQ4gJ2-BgSV-qC-Cs7fS7F6zW4jsLpk9DK2SeR0e4WDLiury0Wqiw-9ADHdBiB3inIEOjz-iu8cKHw-gpvCF5zCfTQhnvZoqpOZ_bZ9N-piuciik0EqJw
Content-Length: 534
Host: localhost:8080

{
  "tpo" : "TPO:000000000001",
  "outcomeTypeName" : "Colony",
  "colony" : {
    "name" : "jr34293",
    "genotypingComment" : "Genotyping comment changed.",
    "backgroundStrainName" : "C57BL/6NJ",
    "distributionProducts" : [ {
      "id" : 1,
      "distributionCentreName" : "BCM",
      "productTypeName" : "Live mice",
      "distributionNetworkName" : "MMRRC",
      "endDate" : "2018-11-09T00:00:00",
      "startDate" : "2018-04-19T00:00:00"
    } ],
    "statusTransition" : {
      "actionToExecute" : null
    }
  }
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 509

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000001"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:17.070629",
    "comment" : "Outcome updated",
    "details" : [ {
      "field" : "colony.genotypingComment",
      "oldValue" : "An example comment for the genotyping.",
      "newValue" : "Genotyping comment changed.",
      "note" : "Field changed"
    } ]
  } ]
}

8. Mutations

This section describes the REST endpoints for mutations in the system.

8.1. Fields

These are the fields you are going to see in the body of a request in a GET or in the payload for POST or PUT operations.

Path Type Description

id

Number

id. READ ONLY

min

String

Public identifier for the mutation. READ ONLY

mgiAlleleId

String

Public identifier assigned by MGI for the allele or aberration. READ ONLY

symbol

String

Allele or aberration symbol. SPECIFY ONLY WHEN CREATING

mgiAlleleSymbolWithoutImpcAbbreviation

Boolean

[THIS FIELD IS DEPRECATED AND WILL BE REMOVED] Used to indicate whether the allele symbol includes the IMPC abbreviation. SPECIFY ONLY WHEN CREATING

mgiAlleleSymbolRequiresConstruction

Boolean

[THIS FIELD IS DEPRECATED AND WILL BE REMOVED] Indicates if the allele symbol needs to be constructed from a superscript recorded in the mgiAlleleSymbol field and the associated gene information. SPECIFY ONLY WHEN CREATING

geneticMutationTypeName

String

Formal classification of the mutation in genetic terms, or an indication that the mutation has not been tested genetically.

molecularMutationTypeName

String

The type of the molecular lesion associated with the mutation.

imitsAllele

Number

The identifier assigned to the allele in iMits. READ ONLY

mutationQcResults[]

Array

Array containing the results of QC tests carried out on the mutation.

mutationQcResults[].id

Number

Internal identifier. READ ONLY AND SUBJECT TO CHANGE.

mutationQcResults[].qcTypeName

String

Type of Mutation QC carried out.

mutationQcResults[].statusName

String

Status of the Mutation QC.

mutationSequences[]

Array

Array containing a collection of sequences that characterise the mutation.

mutationSequences[].id

Number

Internal identifier. READ ONLY AND SUBJECT TO CHANGE

mutationSequences[].index

Number

Index used to order the sequences.

mutationSequences[].sequence

Object

An object describing the sequence.

mutationSequences[].sequence.id

Number

Internal identifier. READ ONLY AND SUBJECT TO CHANGE

mutationSequences[].sequence.sequence

String

A sequence in FASTA format.

mutationSequences[].sequence.typeName

String

The type of sequence.

Possible values:

- complete

- partial

- 5_prime_end

- 3_prime_end

mutationSequences[].sequence.categoryName

String

The category assigned to the sequence.

Possible values:

- intention target sequence

- original starting sequence

- outcome sequence

A mutation should always be specified as 'outcome sequence'.

description

String

Mutation description note.

mutationCategorizations[]

Array

A list classifying the mutation.

mutationCategorizations[].name

String

A label describing the mutation.

mutationCategorizations[].description

String

A longer description of this category.

mutationCategorizations[].typeName

String

A broader classification of the description.

Possible values are:

- allele_category

- repair_mechanism

genes[]

Array

List of genes associated with the mutation.

genes[].id

Number

An internal identifier for the gene. READ ONLY AND SUBJECT TO CHANGE

genes[].name

String

The name of the gene.

genes[].symbol

String

The valid symbol for the gene.

genes[].speciesName

String

The species related to the gene.

genes[].externalLink

String

An external link with more information about the gene.

genes[].accessionId

String

The accession identifier for the gene.

_links.self.href

String

Link to the mutation.

_links.outcomes[].href

String

Outcomes associated with the mutation.

8.2. GET

8.2.1. Get a specific mutation

This endpoint fetches a specific mutation associated with an outcome.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000002/mutations/MIN:000000000002' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6InljRkhoeUFYTG9oZWNlcWp5SW1wOVEiLCJpYXQiOjE2Mjg3NzcxMTgsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxOH0.bfzS4VwVY0zXC2WUNAxm6n2USTGMPbMi3TTBn6Tr1bEnYO7LrbRPep1vQ2aOZlTiNM3QGPV4KPBvt2ak_xhFlJ6Grrw_sIRaCE7KHvZODQ7XQr_xYc9DhNT3CRgbb_oJ-Gn4-nIbkgmFJwd3ZXHLg1q68onZbMLFMMRzOwzNwYIbCztR2O_9yu3Can0-wJeORhgaHARrYt0AyL1vSUTJuVJ9Hz-co8cmgLj6uFoldvCXtmoIWzT0qw5ezYtI91RRVIXsm6U1xAlFQcemQcqPDk-exT0vmzGze0NKeGUrolrIAn1yGWP988WF629IjRddimZP7fHqFg5Ef5CmfyCUow'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 1513

{
  "id" : 2,
  "min" : "MIN:000000000002",
  "mgiAlleleId" : "MGI:6342258",
  "imitsAllele" : 266843,
  "mgiAlleleSymbolWithoutImpcAbbreviation" : false,
  "symbol" : "em1(IMPC)J",
  "description" : "",
  "mgiAlleleSymbolRequiresConstruction" : true,
  "geneticMutationTypeName" : "Not Tested",
  "molecularMutationTypeName" : "Deletion",
  "mutationQcResults" : [ {
    "id" : 1,
    "qcTypeName" : "mutant_specific_sr_pcr",
    "statusName" : "pass"
  } ],
  "mutationSequences" : [ {
    "id" : 2,
    "index" : 1,
    "sequence" : {
      "id" : 1,
      "sequence" : ">Otog TGGGACTAGGTCACAGACAGAAAAAGGGGGATGAGAAGGCCTTAGATCTAAGGGAGGTAAAGAGAGAATTAACCACAGGAATTAGCACACTGAAGGATCGTGCTCGCCAGACCTCAAACCATCTCCTTCTTGCGTCATGAGAAAGCCTTGACCCATCATTTTCCAGTTTTCTGTGTTCTTGCCCCACTTTGGCCCCTGGATCCTGGGATCTCCCCAGAAATTCTTACCTAGCCCC",
      "typeName" : "complete",
      "categoryName" : "outcome sequence"
    }
  } ],
  "mutationCategorizations" : [ {
    "name" : "NHEJ",
    "description" : "non-homology end-joining",
    "typeName" : "repair_mechanism"
  } ],
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/mutations/MIN:000000000002"
    },
    "outcomes" : [ {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000002"
    } ]
  },
  "genes" : [ {
    "id" : 2,
    "symbol" : "Otog",
    "speciesName" : "Mus musculus",
    "accessionId" : "MGI:1202064",
    "name" : "otogelin",
    "externalLink" : "http://www.mousephenotype.org/data/genes/MGI:1202064"
  } ]
}

8.2.2. Get history for a specific mutation

This endpoint fetches the history of a specific mutation associated with an outcome.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000002/mutations/MIN:000000000002/history' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6ImpZLXJmV05GeFFraHY3Z0tFLWNoTGciLCJpYXQiOjE2Mjg3NzcxMTksInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxOX0.g8gN9QEu6gh0vqlQiC5CKhajsb0GmwuEJTFXVq2YM8c-4GzxxbOfB0RoNUXHyhfpOYrHMLaFgzXjXXbfWChIhmqE5ZyR8cSj0AqvKf9S3k5nPLGVGn9e-N6MVpm4xrQ0tIaE-g6YJ_clKd36OLKXpq6SIDqrwzQDOLue5QLJaXeRFAZ4BflhQp9QVFZp-yO6f2Ih-JfFA_SviPBK6fv7IKYoeI64LKAnf8qE1etQUoBOCeB84U9b69NnyomX4ZB9Ji--tSJxt_V6GHY1Hq9fyZF5Y4SNtUFFe9UeyXstnl1IkHAHM9TleLHqbM9tvrj4Ekmxeh1KREt5Ocpe82aXJQ'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 290

[ {
  "id" : 1,
  "user" : "gentar_test_user1@gentar.org",
  "date" : "2020-06-17T15:08:56.643268",
  "comment" : "Mutation updated",
  "details" : [ {
    "field" : "geneticMutationTypeName",
    "oldValue" : "Dominant",
    "newValue" : "Recessive",
    "note" : "Field changed"
  } ]
} ]

8.3. POST

A mutation is created as part of an outcome, see Create an outcome (colony), rather than as a POST request to a mutation endpoint.

8.4. PUT

8.4.1. Update a mutation

This endpoint allows the modification of an existing mutation.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000002/mutations/MIN:000000000002/' -i -X PUT \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IlF6dEpoSC1iTklEYWVBdlBiZ0kwWFEiLCJpYXQiOjE2Mjg3NzcxMTksInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxOX0.k6k3HhiIqg2A_EIxlIRQSvEN8qSe0UGITu3oAXSi2H6e4_a5bdICioGu9sXZcP5FcRvExUXkM1bFNv3p5kwACL7PSI7H5zTvG4sPqCIDyWNPF8Knk9EvdD0iQ2a_gIhLYAp_LKPltFGt6YSviNaT_qi2fkdI6f7NE_2YcV9kMSo-UnrPDQpjGHZX568dLN2JmWQ_JlMW9nSPagE2Y6qqVBQ3L9SevGzlDq-nogDF1FlRMlDd3l3N4kAEdJgr7Mja6vKeT9znn3bgQox2XuD9upt57LWfcN9rQCbkidqd2e339xMy1MStBhgRwu8R47q8avyRWObpWa_2TSPHcsX1vg' \
    -d '{
  "min" : "MIN:000000000002",
  "mgiAlleleId" : "MGI:6342258",
  "imitsAllele" : 266843,
  "symbol" : "em1(IMPC)J",
  "mgiAlleleSymbolWithoutImpcAbbreviation" : false,
  "mgiAlleleSymbolRequiresConstruction" : true,
  "geneticMutationTypeName" : "Null",
  "molecularMutationTypeName" : "Point Mutation",
  "mutationQcResults" : [ {
    "id" : 1,
    "qcTypeName" : "mutant_specific_sr_pcr",
    "statusName" : "pass"
  }, {
    "id" : null,
    "qcTypeName" : "loxp_screen",
    "statusName" : "fail"
  } ],
  "mutationSequences" : [ {
    "id" : 2,
    "index" : 1,
    "sequence" : {
      "id" : 1,
      "sequence" : ">Otog TGGGACTAGGTCACAGACAGAAAAAGGGGGATGAGAAGGCCTTAGATCTAAGGGAGGTAAAGAGAGAATTAACCACAGGAATTAGCACACTGAAGGATCGTGCTCGCCAGACCTCAAACCATCTCCTTCTTGCGTCATGAGAAAGCCTTGACCCATCATTTTCCAGTTTTCTGTGTTCTTGCCCCACTTTGGCCCCTGGATCCTGGGATCTCCCCAGAAATTCTTACCTAGCCCC",
      "typeName" : "complete",
      "categoryName" : "outcome sequence"
    }
  } ],
  "description" : "Otog<em1(IMPC)J>:\\r\\nThis allele was generated at The Jackson Laboratory by electroporating Cas9 protein and 2 guide sequences CTTCACGTACCAAGGAGGGG and TCTTGCTTCCTACTTCCAGT, which resulted in a 520 bp deletion beginning at Chromosome 7 position 46,245,130 bp and ending after 46,245,649 bp (GRCm38/mm10). This mutation deletes ENSMUSE00000204147 (exon 4) and 444 bp of flanking intronic sequence including the splice acceptor and donor and is predicted to cause a change of amino acid sequence after residue 71 and early truncation 34 amino acids later. \\r\\n\\r\\n\\r\\n",
  "mutationCategorizations" : [ {
    "name" : "NHEJ",
    "description" : "non-homology end-joining",
    "typeName" : "repair_mechanism"
  }, {
    "name" : "HR",
    "typeName" : "repair_mechanism"
  } ],
  "_links" : {
    "outcomes" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000002"
    }
  },
  "genes" : [ {
    "symbol" : "Otog"
  }, {
    "symbol" : "Dennd6b"
  } ]
}'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 5905

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/outcomes/TPO:000000000002/mutations/MIN:000000000002"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:20.215943",
    "comment" : "Mutation updated",
    "details" : [ {
      "field" : "description",
      "oldValue" : "",
      "newValue" : "Otog<em1(IMPC)J>:\\r\\nThis allele was generated at The Jackson Laboratory by electroporating Cas9 protein and 2 guide sequences CTTCACGTACCAAGGAGGGG and TCTTGCTTCCTACTTCCAGT, which resulted in a 520 bp deletion beginning at Chromosome 7 position 46,245,130 bp and ending after 46,245,649 bp (GRCm38/mm10). This mutation deletes ENSMUSE00000204147 (exon 4) and 444 bp of flanking intronic sequence including the splice acceptor and donor and is predicted to cause a change of amino acid sequence after residue 71 and early truncation 34 amino acids later. \\r\\n\\r\\n\\r\\n",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4]",
      "oldValue" : null,
      "newValue" : "Gene(id=4, symbol=Dennd6b, name=DENN/MADD domain containing 6B, type=Gene, genomeBuild=GRCm39, entrezGeneId=69440, ncbiChromosome=15, ncbiStart=89066416, ncbiStop=89080793, ncbiStrand=-, ensemblGeneId=ENSMUSG00000015377, ensemblChromosome=15, ensemblStart=89066416, ensemblStop=89080699, ensemblStrand=-, mgiCm=44.70, mgiChromosome=15, mgiStart=89066416, mgiStop=89080699, mgiStrand=-, species=Species(id=1, name=Mus musculus, taxonId=10090), accId=MGI:1916690)",
      "note" : "Element added"
    }, {
      "field" : "genes.[4].accId",
      "oldValue" : null,
      "newValue" : "MGI:1916690",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ensemblChromosome",
      "oldValue" : null,
      "newValue" : "15",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ensemblGeneId",
      "oldValue" : null,
      "newValue" : "ENSMUSG00000015377",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ensemblStart",
      "oldValue" : null,
      "newValue" : "89066416",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ensemblStop",
      "oldValue" : null,
      "newValue" : "89080699",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ensemblStrand",
      "oldValue" : null,
      "newValue" : "-",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].entrezGeneId",
      "oldValue" : null,
      "newValue" : "69440",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].genomeBuild",
      "oldValue" : null,
      "newValue" : "GRCm39",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].mgiChromosome",
      "oldValue" : null,
      "newValue" : "15",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].mgiCm",
      "oldValue" : null,
      "newValue" : "44.70",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].mgiStart",
      "oldValue" : null,
      "newValue" : "89066416",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].mgiStop",
      "oldValue" : null,
      "newValue" : "89080699",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].mgiStrand",
      "oldValue" : null,
      "newValue" : "-",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].name",
      "oldValue" : null,
      "newValue" : "DENN/MADD domain containing 6B",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ncbiChromosome",
      "oldValue" : null,
      "newValue" : "15",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ncbiStart",
      "oldValue" : null,
      "newValue" : "89066416",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ncbiStop",
      "oldValue" : null,
      "newValue" : "89080793",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].ncbiStrand",
      "oldValue" : null,
      "newValue" : "-",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].species.name",
      "oldValue" : null,
      "newValue" : "Mus musculus",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].symbol",
      "oldValue" : null,
      "newValue" : "Dennd6b",
      "note" : "Field changed"
    }, {
      "field" : "genes.[4].type",
      "oldValue" : null,
      "newValue" : "Gene",
      "note" : "Field changed"
    }, {
      "field" : "geneticMutationType.name",
      "oldValue" : "Not Tested",
      "newValue" : "Null",
      "note" : "Field changed"
    }, {
      "field" : "molecularMutationType.name",
      "oldValue" : "Deletion",
      "newValue" : "Point Mutation",
      "note" : "Field changed"
    }, {
      "field" : "mutationCategorizations.[9]",
      "oldValue" : null,
      "newValue" : "id:9, name:HR, description: null, mutationCategorizationTypeName:repair_mechanism",
      "note" : "Element added"
    }, {
      "field" : "mutationCategorizations.[9].mutationCategorizationType.name",
      "oldValue" : null,
      "newValue" : "repair_mechanism",
      "note" : "Field changed"
    }, {
      "field" : "mutationCategorizations.[9].name",
      "oldValue" : null,
      "newValue" : "HR",
      "note" : "Field changed"
    }, {
      "field" : "mutationQcResults.[id:null, QC type name:loxp_screen, QC status:fail]",
      "oldValue" : null,
      "newValue" : "id:null, QC type name:loxp_screen, QC status:fail",
      "note" : "Element added"
    }, {
      "field" : "mutationQcResults.[id:null, QC type name:loxp_screen, QC status:fail].qcType.name",
      "oldValue" : null,
      "newValue" : "loxp_screen",
      "note" : "Field changed"
    }, {
      "field" : "mutationQcResults.[id:null, QC type name:loxp_screen, QC status:fail].status.name",
      "oldValue" : null,
      "newValue" : "fail",
      "note" : "Field changed"
    } ]
  } ]
}

9. Phenotyping Stages

This section describes the REST endpoints for phenotyping stages in the system.

Fields

These are the fields you are going to see in the body of a request in a GET or in the payload for POST or PUT operations.

Path Type Description

pin

String

Public identifier for the phenotyping plan.

psn

String

Public identifier for the phenotyping stage.

statusName

String

Current status of the phenotyping stage.

phenotypingTypeName

String

Phenotyping attempt type.

phenotypingExternalRef

String

Colony name or Specimen Group name.

phenotypingExperimentsStarted

String

Date when the phenotyping experiments started.

initialDataReleaseDate

String

Date when some data for the line becomes public. This is set by the CDA

tissueDistributions[]

Array

Tissue distribution available.

tissueDistributions[].id

Number

Id of the record in the system.

tissueDistributions[].startDate

String

Tissue distribution starting date.

tissueDistributions[].endDate

String

Tissue distribution ending date.

tissueDistributions[].workUnitName

String

Work unit responsible for the distribution.

tissueDistributions[].materialDepositedTypeName

String

Type of tissue available.

statusDates[]

Array

Stamps of the statuses the phenotyping stage has gone through.

statusDates[].statusName

String

Status name.

statusDates[].date

String

Date when the status record was saved in the system

statusTransition

Object

Information about the current state in the state machine for the phenotyping stage.

statusTransition.currentStatus

String

Current status in the phenotyping stage.

statusTransition.transitions[]

Array

Transitions in the state machine given the current state.

statusTransition.transitions[].action

String

Action or transition’s name.

statusTransition.transitions[].description

String

Transition’s description.

statusTransition.transitions[].triggeredByUser

Boolean

Indicates whether the transition is executed by the user or by the system.

statusTransition.transitions[].available

Boolean

Indicates if the transition can be executed at the moment.

statusTransition.transitions[].note

String

Additional explanation about the availability to execute the transition.

statusTransition.transitions[].nextStatus

String

Next status that the plan will have if the transition is executed.

statusTransition.actionToExecute

Null

Name of the transition (action) to execute.

_links.self.href

String

Link to the phenotyping stage.

_links.plan.href

String

Link to the plan.

9.1. GET

9.1.1. Get a specific phenotyping stage

This endpoint fetches a specific phenotyping stage belonging to a plan.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/phenotypingStages/PSN:000000000001' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6ImV5Z1d6c0drSU50RDdYRVRGTG45R3ciLCJpYXQiOjE2Mjg3NzcxMTMsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxM30.GLitXrJpYYWLcAUQBViCwwPMYeIHesMOFofCNebZPwwLmxuhtK-8UQkePxsVWb2ybm6wgSVZIs5NS5O4cXZl5A4ljFLrMZKVSs_eTkMAY1Cen3t8gBL_7iadPd_X2YIlrsdeRuyL2OuKgLdBOT1TUnsAEDnUCgH5xovA4_6tcEqHS-e1wVsLAKE3NeOvt19epjk15y6a2PNS7cRUIYL0bxukJwRMR-JVGcpeDAS97FIh__TsUHHOJ7oQsJei9TTxV8PotX9CleKRiarvBPEvcwyJLnisJvCubW2rgZrnXa6PID2SnFSZfjZiXAELc1ekX1sOou34iOrL12rOYfyeRg'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 1714

{
  "pin" : "PIN:0000000001",
  "psn" : "PSN:000000000001",
  "statusName" : "Phenotyping Started",
  "phenotypingTypeName" : "early adult and embryo",
  "phenotypingExternalRef" : "CR10129",
  "phenotypingExperimentsStarted" : "2020-02-24",
  "initialDataReleaseDate" : "2015-11-23",
  "tissueDistributions" : [ {
    "id" : 1,
    "startDate" : "2020-04-13",
    "endDate" : "2021-05-15",
    "workUnitName" : "TCP",
    "materialDepositedTypeName" : "Paraffin-embedded Sections"
  } ],
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/phenotypingStages/PSN:000000000001"
    },
    "plan" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001"
    }
  },
  "statusDates" : [ {
    "statusName" : "Phenotyping Registered",
    "date" : "2019-11-01T00:00:00"
  }, {
    "statusName" : "Phenotyping Started",
    "date" : "2019-11-02T00:00:00"
  } ],
  "statusTransition" : {
    "currentStatus" : "Phenotyping Started",
    "transitions" : [ {
      "action" : "updateToPhenotypingAllDataSent",
      "description" : "No more phenotype data will be sent to the DCC.",
      "triggeredByUser" : true,
      "available" : true,
      "note" : "Used to indicate all phenotype data has been sent to the DCC.",
      "nextStatus" : "Phenotyping All Data Sent"
    }, {
      "action" : "rollbackPhenotypingStarted",
      "description" : "Rollback the state of phenotyping marked as having phenotyping started.",
      "triggeredByUser" : true,
      "available" : false,
      "note" : "The current user does not have permission to rollback to 'Phenotyping Registered'",
      "nextStatus" : "Phenotyping Registered"
    } ],
    "actionToExecute" : null
  }
}

9.1.2. Get all phenotyping stages in a plan

This endpoint shows all the phenotyping stages associated to a plan.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/phenotypingStages' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6ImxuN3dLdWhkYnhSQ0s2Wm5ZcncxWlEiLCJpYXQiOjE2Mjg3NzcxMTMsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxM30.ZHEHpXQYcOfpE5lvjuuh_-4Y3QuyHcctY60-1-eiHDFarn_mdDRlou1K4QBhX1GbMCkV6e49Pg-QCCYb4MJ53tm0jzyan54M5c2eMGAS6IJhYfLhly5gPwcvaGw5Bj1hctXTCci6UCZ2gjche2PAuE6g5f0NhFW06VW-ePA1XW181PFMiE0_XYoSnzsW4vhfNDiIrYUhaUUL3IzKdqIsSRZ5HdWlGfV9oqLLUR0oePHvTRmWRhwTiOj70K2Z0Tcmdhtbzmfd-bQz1kA2NiRYnEc3xpeDh4pGphv5-ChOWGxEoQDYsTElQoNhn8XQVelCKG6TtD01hoO04mKR6xT38Q'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 4057

{
  "_embedded" : {
    "phenotypingStages" : [ {
      "pin" : "PIN:0000000001",
      "psn" : "PSN:000000000001",
      "statusName" : "Phenotyping Started",
      "phenotypingTypeName" : "early adult and embryo",
      "phenotypingExternalRef" : "CR10129",
      "phenotypingExperimentsStarted" : "2020-02-24",
      "initialDataReleaseDate" : "2015-11-23",
      "tissueDistributions" : [ {
        "id" : 1,
        "startDate" : "2020-04-13",
        "endDate" : "2021-05-15",
        "workUnitName" : "TCP",
        "materialDepositedTypeName" : "Paraffin-embedded Sections"
      } ],
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/phenotypingStages/PSN:000000000001"
        },
        "plan" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Phenotyping Registered",
        "date" : "2019-11-01T00:00:00"
      }, {
        "statusName" : "Phenotyping Started",
        "date" : "2019-11-02T00:00:00"
      } ],
      "statusTransition" : {
        "currentStatus" : "Phenotyping Started",
        "transitions" : [ {
          "action" : "updateToPhenotypingAllDataSent",
          "description" : "No more phenotype data will be sent to the DCC.",
          "triggeredByUser" : true,
          "available" : true,
          "note" : "Used to indicate all phenotype data has been sent to the DCC.",
          "nextStatus" : "Phenotyping All Data Sent"
        }, {
          "action" : "rollbackPhenotypingStarted",
          "description" : "Rollback the state of phenotyping marked as having phenotyping started.",
          "triggeredByUser" : true,
          "available" : false,
          "note" : "The current user does not have permission to rollback to 'Phenotyping Registered'",
          "nextStatus" : "Phenotyping Registered"
        } ],
        "actionToExecute" : null
      }
    }, {
      "pin" : "PIN:0000000001",
      "psn" : "PSN:000000000002",
      "statusName" : "Late Adult Phenotyping Registered",
      "phenotypingTypeName" : "late adult",
      "phenotypingExternalRef" : "CR10129",
      "phenotypingExperimentsStarted" : "2018-09-17",
      "initialDataReleaseDate" : "2019-04-12",
      "tissueDistributions" : [ {
        "id" : 2,
        "startDate" : "2019-04-13",
        "endDate" : "2020-05-15",
        "workUnitName" : "UCD",
        "materialDepositedTypeName" : "Fixed Tissue"
      } ],
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001/phenotypingStages/PSN:000000000002"
        },
        "plan" : {
          "href" : "http://localhost:8080/api/plans/PIN:0000000001"
        }
      },
      "statusDates" : [ {
        "statusName" : "Late Adult Phenotyping Registered",
        "date" : "2018-09-27T00:00:00"
      } ],
      "statusTransition" : {
        "currentStatus" : "Late Adult Phenotyping Registered",
        "transitions" : [ {
          "action" : "updateToRederivationStarted",
          "description" : "Started rederivation of the colony for phenotyping",
          "triggeredByUser" : true,
          "available" : true,
          "note" : "executed by the user when rederivation is started.",
          "nextStatus" : "Rederivation Started"
        }, {
          "action" : "updateToPhenotypingStarted",
          "description" : "Marked as started when the DCC receives phenotype data",
          "triggeredByUser" : true,
          "available" : false,
          "note" : "The current user does not have permission to move to 'Phenotyping Started'",
          "nextStatus" : "Phenotyping Started"
        }, {
          "action" : "abortWhenPhenotypeRegistered",
          "description" : "Abort phenotyping when a phenotype attempt has been registered",
          "triggeredByUser" : true,
          "available" : true,
          "note" : null,
          "nextStatus" : "Phenotype Production Aborted"
        } ],
        "actionToExecute" : null
      }
    } ]
  }
}

9.1.3. Get the history of changes for a phenotyping stage

You can use this endpoint to see all the changes that have been made on a phenotyping stage.

Example Request

Curl:

$ curl 'http://localhost:8080/api/plans/PIN:0000000001/phenotypingStages/PSN:000000000002/history' -i -X GET \
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IkdUSGhPS3hSQkg5cWVNM1lDUDBldlEiLCJpYXQiOjE2Mjg3NzcxMTQsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxNH0.joFpEhPyXIqupFR709nHWnsmLJIJCgRL5NSLJCTd2OE0CfAuSKoLUeO29gdUi2NjR6Sl0zIl9v-YG4bWfDFtJbf6ijcK13aaYgaOTSaLvEfH5IT55GpmBbsVkxTiv0UMlsJ7CSN4PSJ8JtEW-55flUVr0mOtfalTv1K7BXTCTuLA70r7qrhpBr-LQ2kN5Yt1xg0776YkPSzbpRxdmi7sGdgW-Zry0tIHRjsk5wZG4Kix6UYDxDLwZ6RBPPvST3lmG2SWrbxx4l6VyACstTK9iOGg1KXGCYP9c3EX9ZXsut7dJgrrVNMkcuqfzMjD0Cr8DGqzVEQFm8SW55qQP1glIQ'
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 309

[ {
  "id" : 1,
  "user" : "gentar_test_user1@gentar.org",
  "date" : "2020-06-17T15:08:56.643268",
  "comment" : "PhenotypingStage updated",
  "details" : [ {
    "field" : "phenotyping_experiments_started",
    "oldValue" : "2020-02-24",
    "newValue" : "2020-04-02",
    "note" : "Field changed"
  } ]
} ]

9.2. POST

9.2.1. Create a phenotyping stage

Example Request

Curl:

POST /api/plans/PIN:0000000002/phenotypingStages/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IlZCbm5xODcxNzVKcEhmNkN2Z2dURkEiLCJpYXQiOjE2Mjg3NzcxMTMsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxM30.g4pfaG2IgOkl6cdJTHIZYNR-LipW9nHPpNxSA5EYUbl0c1u9rrvPZE4xwT0ZHo8uhcBybPKuR4vK3c1rx9N6QvV7XlF4rcVI1KyzbulRovUjmBt0ORhounfM9pUz8c1eoeXtaxHXVbshP4GmkIEN9PMdJln6QGiyBAJGMTSZsVKVqYnZo00j7rXOA4AGvzEeDIGEx1BknXfK6RukpD6ze9kLDQq4hY_xYRC1Tp-yZ_pSsxWU5XcMTfV-EVgs72LxzJZ9f-o0CNHT8hDdY09iv4dl0fZ-33XmJMxIhJoVhqLtNHGgwyInYDdoKPv7-R9tkyJwFYF7dU8zWqcbwxoF3w
Content-Length: 377
Host: localhost:8080

{
  "phenotypingTypeName" : "early adult and embryo",
  "phenotypingExternalRef" : "JR34077",
  "phenotypingExperimentsStarted" : "2020-02-24",
  "initialDataReleaseDate" : "2015-11-23",
  "tissueDistributions" : [ {
    "startDate" : "2020-04-13",
    "endDate" : "2021-05-15",
    "workUnitName" : "TCP",
    "materialDepositedTypeName" : "Paraffin-embedded Sections"
  } ]
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 333

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000002/phenotypingStages/PSN:000000000004"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:13.195532",
    "comment" : "PhenotypingStage created",
    "details" : [ ]
  } ]
}

9.3. PUT

9.3.1. Update a phenotyping stage

Example Request

Curl:

PUT /api/plans/PIN:0000000001/phenotypingStages/PSN:000000000001 HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2V4cGxvcmUuYWFpLmViaS5hYy51ay9zcCIsImp0aSI6IlM0TXNzRGJjdklMU2pueGFfTlY5U0EiLCJpYXQiOjE2Mjg3NzcxMTQsInN1YiI6InVzci0zYmM5ZTRmNi02NTJhLTRhYmYtYWQ5Mi03NzM5N2Y4YmRkM2YiLCJlbWFpbCI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuaWNrbmFtZSI6ImdlbnRhcl90ZXN0X3VzZXIxQGdlbnRhci5vcmciLCJuYW1lIjoiR2VuVGFSIFRlc3QgdXNlciAxIiwiZG9tYWlucyI6W10sImV4cCI6MTYyODc4NzkxNH0.UdmU7MM-JcEaKIikx6qa4kMnUdGxRnqSil-I2laVM8-3f0xn4imn-EPVTHqg6Pq8LO9zB75kSBVSfPMIlXWkQjbrrmqa6AGhQ_wyftO7Hn8TeZueyvTd4Am3zHxzcuKmqHWbpIBJiDxzmzS_E8AtZmFB89D59Aqs_rg1KVIhfh77YIzobj19PkW_hdJCUHWEZ84SXZZ6Apdy5sKJ_GAPQ1m-E76T8J82Ma7aH0Ncx1jpOiS8ld7OxF10APXkS1CN4o-1Keb0ck7j04eqTbwton4RLdONL1LCB26S8rfIPDnDoGipfHZFm5-5bot0G7oElCOZMogSKZsIvQHqFLAPeg
Content-Length: 428
Host: localhost:8080

{
  "psn" : "PSN:000000000001",
  "phenotypingExternalRef" : "CR10129",
  "phenotypingExperimentsStarted" : "2020-04-02",
  "initialDataReleaseDate" : "2015-11-23",
  "tissueDistributions" : [ {
    "id" : 1,
    "startDate" : "2020-04-13",
    "endDate" : "2021-05-15",
    "workUnitName" : "TCP",
    "materialDepositedTypeName" : "Paraffin-embedded Sections"
  } ],
  "statusTransition" : {
    "actionToExecute" : null
  }
}
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/hal+json
Content-Length: 487

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/plans/PIN:0000000001/phenotypingStages/PSN:000000000001"
    }
  },
  "history" : [ {
    "id" : 1,
    "user" : "gentar_test_user1@gentar.org",
    "date" : "2021-08-12T14:05:14.604427",
    "comment" : "PhenotypingStage updated",
    "details" : [ {
      "field" : "phenotypingExperimentsStarted",
      "oldValue" : "2020-02-24",
      "newValue" : "2020-04-02",
      "note" : "Field changed"
    } ]
  } ]
}

10. State Machine interaction

10.1. Structure

Several entities in GenTaR rely on a state machine to control the logic to change from one status to another. The state machines for these entities are described in the following document.

When you make a GET request to one of those entities, as part of the response you will receive a statusTransition section, which contains information about the current status and what actions can be executed in order to change that status.

"statusTransition" : {
    "currentStatus" : "Founder Obtained",
    "transitions" : [ {
    "action" : "abortWhenFounderObtained",
    "description" : "Abort the plan after a founder obtained",
    "triggeredByUser" : true,
    "available" : true,
    "note" : null,
    "nextStatus" : "AttemptAborted"
    } ],
    "actionToExecute" : null
Path Type Description

statusTransition

Object

Information about the current state in the state machine for the plan.

statusTransition.currentStatus

String

Current status in the plan

statusTransition.transitions[]

Array

Transitions in the state machine given the current state.

statusTransition.transitions[].action

String

Action or transition’s name.

statusTransition.transitions[].description

String

Transition’s description.

statusTransition.transitions[].triggeredByUser

Boolean

Indicates whether the transition is executed by the user or by the system.

statusTransition.transitions[].available

Boolean

Indicates if the transition can be executed at the moment.

statusTransition.transitions[].note

Null

Additional explanation about the availability to execute the transition.

statusTransition.transitions[].nextStatus

String

Next status that the plan will have if the transition is executed.

statusTransition.actionToExecute

Null

Name of the transition (action) to execute.

10.2. Executing a change in the state machine

To execute a transition in the plan, you need to choose an action that is triggeredByUser = true and available = true and send a PUT request (as a normal plan update ) passing the name of the action as the value actionToExecute in the statusTransition section of the payload.

10.2.1. Example Request

Let’s suppose you want to abort a crispr plan that has the status Founder Obtained. If we do a GET to the plan we want to abort, you will see the statusTransition section with a single available transition executable by the user: abortWhenFounderObtained.

Use the name of the action (abortWhenFounderObtained) as the value in the field actionToExecute.

You can use the whole GET response as the payload for the new operation. You can also decide to send only the statusTransition information in the payload. The following is an example of a request where you decide to leave out the attempt information:

Curl: Unresolved directive in restapi.adoc - include::/usr/src/gentar/rest-api/target/generated-snippets/plans/putCrisprPlanStateMachine/http-request.adoc[]

10.2.2. Example Response

The response will indicate what has changed in the system, along with a link to the resource in case you need to retrieve the new object.

Unresolved directive in restapi.adoc - include::/usr/src/gentar/rest-api/target/generated-snippets/plans/putCrisprPlanStateMachine/http-response.adoc[]

11. Lastest updates

  • 2021-06-25: - Added the field esCellQcOnly to the Project entity to support projects that only relate to ES Cell QC.

    • Added documentation on the fields present in ES cell production plans.

    • Add documentation on the fields present in Cre allele modification production plans.

    • Updated the state_machine_transitions document.

    • GET requests for ES cell and Cre allele modification production plans are supported on the GenTaR Sandbox test database.

  • 2021-02-24: Add two new filters to projects. One for production colony names and one for phenotyping external references.

  • 2021-01-26: Phenotyping Stage state machine: The rollbackPhenotypingAllDataProcessed action used by the DCC now moves the PhenotypingAllDataProcessed state to PhenotypingAllDataSent rather than PhenotypingStarted.

  • 2020-11-30: New filter 'doNotCountTowardsCompleteness' added for phenotyping plans.